成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

牛刀小試-《你好,李煥英》影評(píng)詞云

大數(shù)據(jù) 數(shù)據(jù)可視化
最近,賈玲導(dǎo)演的電影《你好,李煥英》在春節(jié)檔一眾電影中脫穎而出,成為了一匹黑馬,更是中國(guó)影史上第三部票房破50億的電影。我們從豆瓣上看到,該影片當(dāng)前評(píng)分是8.1分,接近30%的評(píng)價(jià)都是5顆星。今天我們就來從豆瓣上爬取一部分影評(píng),結(jié)合jieba和pyecharts做個(gè)分詞和詞云圖。

 最近,賈玲導(dǎo)演的電影《你好,李煥英》在春節(jié)檔一眾電影中脫穎而出,成為了一匹黑馬,更是中國(guó)影史上第三部票房破50億的電影。


我們從豆瓣上看到,該影片當(dāng)前評(píng)分是8.1分,接近30%的評(píng)價(jià)都是5顆星。今天我們就來從豆瓣上爬取一部分影評(píng),結(jié)合jieba和pyecharts做個(gè)分詞和詞云圖。


打開開發(fā)者工具

首先,在豆瓣上找到電影《你好,李煥英》,下拉到影評(píng)區(qū),可以看到共有三十多萬(wàn)條短評(píng)和七千多影評(píng)。短評(píng)數(shù)量太多了,我們還是數(shù)量較少的影評(píng)下手吧。接下來,在瀏覽器中按F12或者右鍵點(diǎn)擊檢查打開開發(fā)者工具,然后選擇network(網(wǎng)絡(luò))選項(xiàng),然后點(diǎn)擊上圖中影評(píng)區(qū)的“全部7494條”,就可以在開發(fā)者工具中看到一系列的請(qǐng)求。


尋找目標(biāo)URL


將影評(píng)區(qū)拖到最底部,將會(huì)看到影評(píng)被分成來幾百個(gè)頁(yè)面,然后我們清空開發(fā)者工具中的捕獲的請(qǐng)求,點(diǎn)擊下一頁(yè),在請(qǐng)求列表中找到第一條,這就是我們翻頁(yè)的通用請(qǐng)求了:每頁(yè)20條,使用start參數(shù)判斷起始位置,這樣循環(huán)300多次就可以獲取到全部的影評(píng)了。

等等,貌似還少了什么?由于影評(píng)內(nèi)容較長(zhǎng),評(píng)論只顯示了一部分,要想看到全部?jī)?nèi)容,還需要點(diǎn)擊一下展開全文。

點(diǎn)一下展開,發(fā)現(xiàn)瀏覽器發(fā)出一條這樣的請(qǐng)求,剛好返回的json就是完整的評(píng)論內(nèi)容。依次點(diǎn)擊后面的幾條影評(píng),也都是同樣格式的請(qǐng)求,只有full前面的數(shù)字發(fā)生了變化,可以斷定這串?dāng)?shù)字就是這條影評(píng)的id了。那么如何知道每一條影評(píng)的id是什么呢?

檢查目標(biāo)元素

鼠標(biāo)放到展開按鈕上,右鍵點(diǎn)擊檢查元素,我們可以發(fā)現(xiàn),頁(yè)面上的每一條影評(píng)都對(duì)應(yīng)了一個(gè)div,這個(gè)div有一個(gè)data-cid的參數(shù),它的值剛好就是上面我們請(qǐng)求中的id,所以我們只要在每次請(qǐng)求頁(yè)面時(shí),遍歷review-list中所有的div,獲取到data-cid的值,再把影評(píng)id循環(huán)代入到上面的url中請(qǐng)求完整影評(píng)內(nèi)容即可。

爬取完影評(píng)評(píng)論并保存到本地,然后使用jieba分詞將評(píng)論文章分割成單詞,然后去除停用詞并統(tǒng)計(jì)詞頻。

大功告成

最后一步就是利用我們前面提到的pyecharts中的wordcloud來制作詞云了。選擇一張照片作為詞云的形狀,然后導(dǎo)入單詞及其詞頻作為權(quán)重,輸出文件即可。

 

(圖片來源于網(wǎng)絡(luò),侵刪)

詳細(xì)代碼:

  1. import requests 
  2. import random, time, json 
  3. from bs4 import BeautifulSoup as bs 
  4. import jieba 
  5. import pandas as pd 
  6. from pyecharts import charts, options 
  7.  
  8. url1 = 'https://movie.douban.com/subject/34841067/reviews?start={}' 
  9. url2 = 'https://movie.douban.com/j/review/{}/full' 
  10. header = '''Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 
  11. Accept-Encoding: gzip, deflate, br 
  12. Accept-Language: zh-CN,zh;q=0.9 
  13. Connection: keep-alive 
  14. Cookie: bid=RWSCuDu3-hA; douban-fav-remind=1; __gads=ID=f22d1fef6a644a7a-228e1b3a32c50048:T=1607935481:RT=1607935481:S=ALNI_MZwRU5qCsyehoDFgRdf7D5PRBqqCg; ll="108288"; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1614764251%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DlzDNd94NFnBQCDIqNI00Il5NwjZoARpWz1lQy5MGKdL26rV5yrb1N1HIoGzoKu5k%26wd%3D%26eqid%3Dda5556d4000016f000000003603f58d7%22%5D; ap_v=0,6.0; __utmc=30149280; __utmz=30149280.1614764252.6.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utma=223695111.1843127241.1614764252.1614764252.1614764252.1; __utmc=223695111; __utmz=223695111.1614764252.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __yadk_uid=rcNjENFDHY62mSmlZqJtXPKJZUfQkM75; _vwo_uuid_v2=D771633F1FBA119FD38FD79DCE082F26D|35b2c7beff079fe25b62163affe94ce8; _pk_id.100001.4cf6=2e0a301ce93b85e0.1614764251.1.1614764408.1614764251.; __utma=30149280.1170719909.1607935481.1614764252.1614766647.7; __utmt=1; __utmb=30149280.2.9.1614766647; dbcl2="152966201:ETujHWfkU2g"; ck=1WtR 
  15. Host: movie.douban.com 
  16. Referer: https://accounts.douban.com/ 
  17. Sec-Fetch-Dest: document 
  18. Sec-Fetch-Mode: navigate 
  19. Sec-Fetch-Site: same-site 
  20. Sec-Fetch-User: ?1 
  21. Upgrade-Insecure-Requests: 1 
  22. User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36''
  23. headers = {x.split(': ')[0]: x.split(': ')[1] for x in header.split('\n')} 
  24. session = requests.session() 
  25. session.headers = headers 
  26. result1 = [] 
  27. for i in range(0, 365): 
  28.     print(i) 
  29.     try: 
  30.         r = session.get(url1.format(i)) 
  31.         r.close() 
  32.         content = bs(r.text) 
  33.         result1.extend(x.get('data-cid'for x in content.select('div.review-list > div')) 
  34.     except
  35.         pass 
  36.     time.sleep(random.randrange(3, 20)) 
  37.  
  38. result2 = [] 
  39. for j in result1: 
  40.     print(result1.index(j)) 
  41.     try: 
  42.         r = session.get(url2.format(j)) 
  43.         r.close() 
  44.         data = json.loads(r.text) 
  45.         result2.append(data) 
  46.     except
  47.         pass 
  48.     time.sleep(random.randrange(10, 20)) 
  49.  
  50. review = [] 
  51. for i in result2: 
  52.     html = bs(i['html']) 
  53.     review.append(html.text) 
  54. for i in ['賈玲''賈曉玲''沈騰''張小斐''李煥英''光林''陳赫''沈光林''冷特']: 
  55.     jieba.add_word(i) 
  56. words = [] 
  57. for x in review: 
  58.     cut = jieba.lcut(x) 
  59.     words.extend(cut) 
  60.  
  61. with open('stopwords.txt''r')as f: 
  62.     stop = [x.strip() for x in f.readlines()] 
  63.     f.close() 
  64. df = pd.DataFrame(words, columns=['words']) 
  65. df_count = pd.DataFrame(df.groupby('words').size()) 
  66. count = df_count.loc[[x for x in df_count.index.values if x not in stop]].sort_values(0, ascending=False
  67. cloud = charts.WordCloud(init_opts=options.InitOpts(width='2000px', height='2000px')) 
  68. cloud.add('你好,李煥英'
  69.           data_pair=[(x, count.loc[x].values[0] / 100) for x in count.index.values], 
  70.           mask_image='jialing.jpeg'
  71.           word_size_range=[10, 300]) 
  72. cloud.render('你好李煥英.html'

 

責(zé)任編輯:姜華 來源: 數(shù)師兄
相關(guān)推薦

2014-06-06 13:42:26

iOS 8QR CodeWWDC2014

2012-05-03 10:24:02

ApacheMINAJava

2010-03-05 17:25:07

sharepoint

2011-11-30 16:02:13

筆記本評(píng)測(cè)

2021-03-11 09:30:19

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2017-04-11 20:49:02

機(jī)器學(xué)習(xí)大數(shù)據(jù)數(shù)據(jù)分析

2021-03-04 09:35:15

電影騰訊微視

2014-12-16 15:10:32

APC BR1000G后備式UPS電源

2021-01-08 09:07:19

Scrapy框架爬蟲

2017-05-04 21:15:30

Android分辨率

2012-02-24 10:48:56

語(yǔ)盒開源

2021-05-20 07:56:35

Bean容器Spring

2023-10-07 08:59:02

2018-01-01 23:02:56

2018-08-02 14:12:16

影評(píng)分析狄仁杰之四大天王

2022-07-04 23:24:28

sql優(yōu)化監(jiān)控

2012-11-09 16:51:41

阿里云開發(fā)者開發(fā)

2025-03-21 09:00:00

2023-04-20 17:41:38

開源清華
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产一区二区精品自拍 | 黄色一级毛片 | 日本不卡免费新一二三区 | 成人性视频在线播放 | 免费在线观看h片 | 亚洲精品乱码久久久久久黑人 | 91网站在线看 | 亚洲另类自拍 | 草久在线视频 | 一区二区三区高清不卡 | 亚洲一区视频在线 | 国产午夜精品久久久久 | av永久| 欧美区日韩区 | 国产精品毛片无码 | 亚洲国产精品人人爽夜夜爽 | 久久久久一区二区 | 国产成人久久精品一区二区三区 | 91久久精品视频 | 第一区在线观看免费国语入口 | 日本男人天堂 | 婷婷成人在线 | 国产成人在线一区二区 | 欧美国产亚洲一区二区 | 精品欧美一区二区中文字幕视频 | 成人精品区 | 亚洲精品久久久久久久不卡四虎 | 精品一二三区视频 | 五月激情婷婷在线 | 激情在线视频网站 | 久久国产亚洲 | 99中文字幕 | 亚洲精品第一 | 久久久www成人免费无遮挡大片 | 日韩精品一区二区三区在线播放 | 国产精品久久久久久福利一牛影视 | 国产日韩欧美电影 | 91av视频在线免费观看 | 99热这里都是精品 | 四虎影院一区二区 | 国产精品国产成人国产三级 |