要爬取的目標鏈結:
提取碼: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請求,爬取 解析 儲存,再複雜的爬蟲也都是在這個基...