"Ant-Man 2" de izlenecek bir şey olup olmadığını görmek için 500 Douban film incelemesini taramak için Python kullanın.

Yazar | Quan Xiaobai H

Baş Editör | Guo Rui

"Kahramanlardan boyutlarına göre bahsetmeyin." "Ant-Man 2" günlerdir sinemalarda. Bu makale, Douban filmleriyle ilgili filmin nasıl derecelendirildiğine bir göz atacak ve kod ve veri seviyelerinden en objektif yorumu verecektir.

Uygulamalı bir uygulama olarak yazar, analiz materyali olarak Douban hakkındaki kısa yorumları gözden geçirmeyi amaçladı. Ancak, tüm kısa incelemeleri, virajlarla ve virajlarla tırmanmayı başaramadım ve sonunda sadece 500'e tırmandım. Elbette, bu şu anda Douban'da görülen en büyük sayı.

Bu makale, tüm tarama sürecini ayrıntılı olarak analiz edecek ve taranan verileri analiz edecektir. Makalenin tamamı iki bölümden oluşur: veri tarama ve metin analizi Taranan veriler daha az bilgi içerdiğinden, açıklayıcı istatistiksel analiz, duyarlılık analizi ve kelime bulutu dahil olmak üzere analiz süreci nispeten basittir.

Paletli kısım

İlk önce hedefleri ve araçları açıklayın:

  • Yazılım: Python3.6;
  • Paketler: selenium jieba snownlp wordcloud (son üçü daha sonra metin analizi içindir).
  • Hedef URL: https://movie.douban.com/subject/26636712/comments?status=P.

Douban'da iki tür film derecelendirme vardır, biri uzun biçimli bir film eleştirisi, diğeri ise yukarıdaki resme benzer bir kısa incelemedir. Bu tarayıcının amacı, yukarıdaki resimdeki kırmızı çerçevedeki kısa açıklamadır. Bilgiler, kullanıcı adı, yıldız derecelendirmesi, tarih, yararlı numara ve yorum metnini içerir.

Ana sayfada 45.576 görünmesine rağmen aslında sadece 500 tanesi görünmektedir.Her sayfada 20 kısa yorum yer alacaktır. Başka yorum verilmeyecektir.Manuel olarak tıklayabilirsiniz. 25. sayfaya tıkladıktan sonra bilgi yok.

Selenium'u taramak için ilk kullandığımda sadece 200'e tırmandım ve 200'den sonra otomatik olarak durdu. Daha sonra uzun süre kontrol ettim ve daha fazla yorum görmek için Douban'a giriş yapmam gerektiğini fark ettim, sonra giriş kodunu ekledim ve işlemi denedim. Çok fazla giriş yaptım ve doğrulama kodum vardı ve doğrulama kodunu manuel olarak girmek için bir bölüm ekledim.Sonunda başarılı bir şekilde 500'e tırmandım. Daha önce girişle ilgili işlem yapmadığım için uzun sürdü. Genel süreç aşağıdaki gibidir.

oturum aç

Açılış sayfası, taradığımız web sitesi olmayan Douban ana sayfası https://www.douban.com/ Bu nedenle, Selenium üzerinden giriş yaptıktan sonra, Ant-Man 2 kısa yorum sayfasını tarama için alacağız.

Hesap adını, şifresini, doğrulama kodunun konumunu, hesap adını ve şifresini Chrome Geliştirici Araçları üzerinden alın ve doğrudan hesap adını ve şifresini girin. Doğrulama kodu alındıktan sonra, görüntü önce yerel olarak kaydedilir ve ardından açıldıktan sonra manuel olarak girilir. Girdikten sonra, doğrulama kodu görüntüsünü kapatın ve kod çalışmaya devam eder. Giriş başarılı, ilk giriş yaptığınızda doğrulama kodu gerekmez.

Hesap adı konumu (açmak için tıklayın):

Şifre konumu (büyük açmak için tıklayın):

Doğrulama kodunun yeri (açmak için tıklayın):

kod aşağıdaki gibi gösterilir:

1def gethtml (url): 2 loginurl = 'https: //www.douban.com/' # giriş sayfası 34 tarayıcı = webdriver.PhantomJS () 5 browser.get (loginurl) # istek giriş sayfası 6 browser.find_element_by_name ('form_email'). Clear () # Kullanıcı adı giriş kutusunu alın ve önce temizleyin 7 browser.find_element_by_name ('form_email'). Send_keys (u 'kullanıcı adınız') # giriş kullanıcı adı 8 browser.find_element_by_name ('form_password'). Clear () # Parola kutusunu alın ve temizleyin 9 tarayıcı.find_element_by_name ('form_password'). Send_keys (u 'şifreniz') # giriş şifresi 1011 # Doğrulama kodu manuel olarak işlenir. Girdikten sonra, sonraki adıma geçmek için resmi kapatmanız gerekir 12 captcha_link = browser.find_element_by_id ('captcha_image'). Get_attribute ('src') 13 urllib.request.urlretrieve (captcha_link, 'captcha.jpg') 14 Image.open ('captcha.jpg'). Show () 15 captcha_code = input ('Pls giriş captcha kodu:') 16 browser.find_element_by_id ('captcha_field'). Send_keys (captcha_code) 1718 browser.find_element_by_css_selector ('input'). Tıklayın () 19 browser.get (url) 20 browser.implicitly_wait (10) 21 dönüş (tarayıcı)

Tırmanma yorumu

Giriş yaptıktan sonra, taramak istediğimiz Ant-Man 2'nin kısa yorum sayfasına gidin. Bir sayfayı taradıktan sonra, sonraki sayfanın konumunu bulun ve son sayfaya kadar döngüye girerek taramaya devam etmek için sonraki sayfaya atlamak için tıklayın.

Geliştirici araçlarından, ilk sayfanın sonraki sayfasının XPath'inin "// * / a" olduğunu ve her sayfanın sonraki sayfasının XPath'inin "// * / a" olduğunu görebilirsiniz.

Ancak son sayfanın XPath'ı ikisi değildir, bu nedenle bir döngü yöntemi kullanabilirsiniz. İlk sayfadan sonra, "// * / a" bulunduğu sürece, sonraki sayfaya atlayacak ve bulunamayana kadar taramaya devam edecektir.

Özel olarak tarama yaparken, tüm bilgileri depolamak için bir DataFrame kullanılır, bir satır bir kullanıcının tüm verileridir, veri konumu yine de geliştirici araçlarıyla elde edilir ve ayrıntılar tekrarlanmaz.

İlgili kod aşağıdaki gibidir:

1def getComment (url): 2 i = 13 AllArticle = pd.DataFrame () 4 tarayıcı = gethtml (url) 5 ise True: 6 s = browser.find_elements_by_class_name ('yorum-öğe') 7 makale = pd.DataFrame (s, sütunlar =) 8 makaleler = makaleler.web.apply (lambda x: x.find_element_by_tag_name ('a'). Get_attribute ('başlık')) 9 makaleler = makaleler.web.apply (lambda x: x.find_element_by_class_name ('kısa'). Metin) 10 makale = makaleler.web.apply (lambda x: x.find_element_by_xpath ("// * / div / div / h3 / span / span"). Get_attribute ('başlık')) 11 makaleler = makaleler.web.apply (lambda x: x.find_element_by_class_name ('yorum-zamanı'). Get_attribute ('başlık')) 12 makaleler = makaleler.web.apply (lambda x: np.int (x.find_element_by_class_name ('oylar'). Metin)) 13 del makale 14 AllArticle = pd.concat (, eksen = 0) 15 baskı ('ilk' + str (i) + 'sayfa tamamlandı!') 1617 deneyin: 18 eğer i == 1: 19 browser.find_element_by_xpath ("// * / a"). Tıklayın () 20 başka: 21 browser.find_element_by_xpath ("// * / a"). Tıklayın () 22 browser.implicitly_wait (10) 23 zaman. Uyku (3) # 3 saniye duraklat 24 ben = i + 125 hariç: 26 AllArticle = AllArticle.reset_index (drop = True) 27 AllArticle döndür 28 AllArticle = AllArticle.reset_index (drop = True) 29 AllArticle döndür

Verileri taramak için aşağıdaki iki işlevi çağırın: Aslında, Douban'daki diğer film incelemeleri için küçük bir değişiklikle taranabileceği tahmin edilmektedir:

1url = 'https: //movie.douban.com/subject/26636712/comments? Status = P' 2result = getComment (url)

Sonunda aşağı inen veriler şöyle:

Metin Analizi

Tanımlayıcı İstatistik Analizi

Öncelikle, örnekteki yıldız derecelendirmelerinin dağılımına bakın. Hiçbiri yıldız derecelendirmesinin olmadığı anlamına gelir.

Genel olarak bakıldığında, Samsungun dört yıldızlı incelemeleri çok büyük ve herkesin Ant-Man 2 hakkındaki genel değerlendirmesinin oldukça iyi olduğunu gösteriyor.

Hangi kısa incelemelerin herkes tarafından en çok tanındığına ve en çok oyu aldığına bir göz atalım:

Görülebileceği gibi......

Orijinal Wasp'ın aktörü Michelle Pfeiffer de hayranlarının ilgisini başarıyla çekti.

duygu analizi

Duygu analizi nispeten basittir, esas olarak incelemenin duygusal eğilimini 0-1 arasında puanlayan snownlp paketinin yardımıyla, duygusal eğilim ne kadar olumlu olursa, puan yükselir. Ancak resmi talimatlara göre burada kullanılan model alışveriş değerlendirme verileri ile eğitilmiştir ve burada kullanıldığında hata biraz büyük olabilir deneyelim deneyelim ve etkisi tamam.

1 # Duygu analizi 2def duyarlılık (içerik): 3 s = SnowNLP (str (içerik)) 4 geri dönüş s. Fikirler 56 7result = result.comment.apply (duygu) 89 # Olumsuz değerlendirme 10result.sort (, artan = Doğru) 1112 # olumlu yorum 13result.sort (, artan = Yanlış)

Önce olumlu incelemelere bir göz atalım, duygu duygusal puanı temsil eder:

Görünüşe göre olumlu eleştiriler, temelde, haklı ve ikna edici, yüksek yıldız derecelendirmesine sahip izleyiciler tarafından verilmektedir. Olumsuz yorumlara bir göz atalım:

Kelime segmentasyonu kelime bulutu

Kelime segmentasyonu jieba tarafından gerçekleştirilir ve anahtar kelimeler TF-IDF algoritmasına göre çıkarılır.Kod ve bazı anahtar kelimeler aşağıdaki gibidir:

1texts = ';'. Join (result.comment.tolist ()) 2cut_text = "" .join (jieba.cut (metinler)) 3keywords = jieba.analyse.extract_tags (cut_text, topK = 500, withWeight = True, allowPOS = ('a', 'e', 'n', 'nr', 'ns')) 45 6ss = pd.DataFrame (anahtar kelimeler, sütunlar =) 78fig = plt.axes () 9plt.barh (aralık (uzunluk (ss.importance)), ss.importance, color = 'darkred') 10fig.set_yticks (np.arange (len (ss.importance))) 11fig.set_yticklabels (ss. Kelimeler, fontproperties = yazı tipi) 12fig.set_xlabel ('Önem') 1314alice_mask = np.array (Image.open ("yiren.jpg")) 15text_cloud = dict (anahtar kelimeler) 16cloud = WordCloud ( 17 genişlik = 600, yükseklik = 400, 18 font_path = "STSONG.TTF", 19 # Arka plan rengini ayarla 20 background_color = 'beyaz', yirmi bir 22 maske = alice_mask, 23 # Maksimum kelime bilgisine izin verin 24 max_words = 500, 25 # en büyük yazı tipi 26 max_font_size = 150, 27 # random_state = 777, 28 # colormap = 'Accent_r' 29) 30313233plt.figure (figsize = (12,12)) 34word_cloud = cloud.generate_from_frequencies (text_cloud) 35plt.imshow (word_cloud) 36plt. Eksen ('kapalı') 37plt.show ()

Anahtar kelimeler

Kelime segmentasyonunun sonuçlarına göre, Ant-Man 2'de şüphesiz herkesin en çok ilgilendiği nokta "Paskalya yumurtası". Son olarak makale, Ant-Man kelime bulutu ile bitiyor!

Yazar: beyaz olanı, mali yüksek lisans öğrencilerini okuma, veri analizi ve niceliksel yatırım önyargısı, kronograf dakika sayıları kişisel beyaz üzerinde halkı nicelleştiriyor. Bu makale yazar tarafından sunulmuştur ve telif hakkı karşı tarafa aittir.

"Belgeler için çağrı"

CSDN halka açık hesabı, "on binlerce teknik insanla büyüme" kavramına bağlıdır. Teknik insanların ilk kez ilgilendikleri endüstri odak olaylarını teknik insanların benzersiz bakış açılarından tanımlamak için yalnızca "inek başlıkları" ve "konuşma" sütunlarını kullanmakla kalmaz, aynı zamanda "Teknoloji Başlıkları" sütunu, sektördeki popüler teknolojilerin ve uygulamaların derinlemesine bir yorumunu sunarak, tüm geliştiricilerin teknolojik trendlere ayak uydurmasına, uyanık bir teknolojik anlayışı sürdürmesine ve sektör eğilimleri ve teknolojileri hakkında daha kapsamlı bir anlayışa sahip olmasına olanak tanır.

Yüksek kaliteli makaleleriniz veya sektördeki etkin noktalar, teknoloji trendleri veya derinlemesine uygulama uygulamaları, senaryoları vb. Hakkında yeni içgörüleriniz varsa, Gönderim için CSDN ile iletişime geçmeye hoş geldiniz, iletişim bilgileri: WeChat (guorui_1118, lütfen gönderim + ad + şirket konumunu not edin), e-posta (guorui@csdn.net).

Devlet İlaç İdaresi hatırlatıyor! Bu ilaçlar çocuklar için yasaktır! Ebeveynler görmeli!
önceki
Tanınmış oyuncular ve oyuncu yönetmenleri "ulusal seçmelere" katılıyor! "Grup Performansı Komünü", hayallerin peşinden gitmek için grup performansını teşvik eder
Sonraki
Kıdemli Alman hayranı, yeni Audi A6L'den bahsediyor, bir görev vermek zorunda
2018'de ulusal komik polis durum envanteri, gülmeden önce kaç kişiye dayanabileceğinizi görün ...
30 yıl önceki bir güvenlik açığı, bilgisayar operasyonlarının 2018'de çökmesine neden olabilir!
Millet kitle fonlaması Marvel süper kahraman bebek: Bronz usta tarafından yaratılan 8 parça 2999 yuan seti
Dil git: Çok değerliyim, gurur duyuyor muyum?
Wang Sicong'un Weibo'sunda nasıl ücretsiz reklam yaparsınız? Sana bir numara öğretmeme izin ver!
OneMix 2 Yoga cep bilgisayarı piyasaya sürüldü: 7 inç dönüştürülebilir, m3 işlemci
Auchaneo II, sübvansiyonların ardından 4.48-56.800 RMB / 3 modellerinin satışına başladı.
499999 yuan için 100 inç TV satın alan Wang Sicong, oyun oynadığı ortaya çıktığını paylaştı.
Kırsal Yeniden Canlanma, Önce Güzellik | Pekin'in Liuzhuang Hu Köyü, çiftçileri zengin olmaya yönlendirmek için kültür turizmi endüstrisini geliştiriyor
Arka arkaya 7 lig zaferi! Barcelona 3-1 Leganes, Dembele golüyle sakatlandı
Kış Olimpiyatları yanınızda 2019 Spor Bağış Etkinlikleri Topluluk Turu Başladı, Dünya Şampiyonu Li Nina Yardımcı Oldu
To Top