爬取某瓣電影中你好,李煥英電影的短評並生成詞云

2021-10-21 02:05:00 字數 3065 閱讀 3418

要爬取的目標鏈結:

提取碼:8888

下面是完整的**:

import requests   # 請求庫,需要安裝

from fake_useragent import useragent # 構造user—agent的庫,需要安裝

from lxml import etree # 使用xpath()需要匯入該庫,需要安裝

import time # 使用time.sleep()使程式睡眠一段時間需要匯入該庫

import jieba # 中文分詞庫,需要安裝

import imageio # 讀取需要該庫,需要安裝

import wordcloud # 製作詞云的庫,需要安裝

from typing import noreturn # 型別標記的庫,需要安裝

class

lhz():

def__init__

(self)

:"""初始化"""

self.next_page_url =

"" \

"/34841067/comments?start=0&limit=20&status=p&sort=new_score"

self.b =

true

defget_all_comment

(self, url:

str)

-> noreturn:

"""獲取頁面中的所有短評

"""response = requests.get(url, headers=

) e = etree.html(response.text, etree.htmlparser())

comm = e.xpath(

'//span[@class="short"]/text()'

)# 使用xpath提取短評,結果是列表

with

open

('lhz.text'

, mode=

'a', encoding=

'utf-8'

)as f:

# 將列表中的每乙個短評處理後寫入檔案中

for i in comm:

i.replace(

'\n',''

) i +=

'\n'

f.write(i)

if self.b:

next_url = e.xpath(

'//div[@id="paginator"]/a/@href'

) self.b =

false

else

: next_url = e.xpath(

'//div[@id="paginator"]/a[3]/@href'

)if next_url:

time.sleep(

0.5)

# 程式睡眠0.5秒

next_url =

''.join(next_url)

.replace(

'&percent_type=',''

) self.next_page_url =

"" \

"/34841067/comments{}"

.format

(next_url)

self.get_all_comment(self.next_page_url)

# 遞迴呼叫

time.sleep(1)

defmake_clound

(self)

-> noreturn:

"""繪製詞雲圖"""

with

open

('lhz.text'

, mode=

'r', encoding=

'utf-8'

)as f:

# 讀取短評檔案中的資料

txt = f.read(

) txt_list = jieba.cut(txt)

# 分詞

string =

' '.join(txt_list)

# 分詞後再使用空格它們重新連線成字串

img = imageio.imread(

'img.png'

)# 讀取

wc = wordcloud.wordcloud(

# 配置詞云引數

width=

1500

,# 詞云的寬,單位是畫素

height=

1000

,# 詞云的高

background_color=

'black'

,# 背景顏色

font_path=

'msyh.ttc'

,# 字型檔案的路徑

mask=img,

# 除白色部分之外的用來繪製詞云

scale=10,

# 按照比例進行放大畫布,如設定為1.5,則長和寬都是原來畫布的1.5倍

stopwords=

,# 設定停用詞

) wc.generate(string)

# 生成詞云

wc.to_file(

'new_inclound.png'

)# 將詞云儲存到檔案中

if __name__ ==

'__main__'

:"""程式入口"""

lhz = lhz(

) lhz.get_all_comment(lhz.next_page_url)

lhz.make_clound(

)

上面用到了許多第三方庫,大家需要使用pip安裝,同時也需要注意你的字型檔案路徑和背景路徑可能和我的不一樣,要改為自己的。

同時,由於豆瓣有反爬措施,爬取到200多條時就需要登入,所以短評只有200多條,但這足夠了!

下面是我的執行結果:

爬取豆瓣電影所有型別的電影資訊

把文字儲存在本地 filename 表示文字的路徑,操作文字的方式許可權 with open filename,a encoding utf 8 as f f.write html f.write n def loadnextlink url,path request urllib.request....

scrapy爬取豆瓣「選電影」各分類中的電影資訊

分類中電影的詳細鏈結可在ajax返回的json中檢視。spider.py coding utf 8 import scrapy,json from urllib.parse import quote from sec douban.items import secdoubanitem class s...

電影票房爬取到MySQL中 爬取最熱電影及票房統計

好久沒有去電影院看電影了,就寫個最熱電影和票房的統計吧,豆瓣電影排行什麼的作為爬蟲入門最合適不過了。同時學習或者溫習一下beautifulsoup 還有csv資料的儲存。這些就是各種各樣爬蟲的基礎和原理,說的不太準確爬蟲就是模擬瀏覽器get post請求,爬取 解析 儲存,再複雜的爬蟲也都是在這個基...