電影《長津湖》是今年電影界的神,其他的不說,我來爬些豆瓣對長津湖的短評看看,暫時不做可視化。
"""
爬取一下豆瓣的長津湖短評,爬取短評的六個內容:
評論人,是否看過,星級(推薦力度),時間,獲贊數,評論內容
將爬取的內容存儲到csv文檔中
"""
import requests
# from bs4 import BeautifulSoup
import parsel
import csv
# 首先建立csv文檔
csvFile = open('長津湖豆瓣短評.csv', mode='a', encoding='utf-8-sig', newline='')
csvWriter = csv.DictWriter(csvFile, fieldnames=[
'評論人',
'是否看過',
'推薦力度',
'評論時間',
'獲贊數量',
'評論內容',
])
# 先寫頭
csvWriter.writeheader() #寫入表頭
# 接下來是爬取數據
# 先建立header
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',
}
# url規律,變化在start=的數字
# url = f'https://movie.douban.com/subject/25845392/comments?start={page}&limit=20&status=P&sort=new_score'
# 開始請求網頁
for page in range(0, 120, 20): # 我這里就爬六頁
url = f'https://movie.douban.com/subject/25845392/comments?start={page}&limit=20&status=P&sort=new_score'
response = requests.get(url, headers=headers) # 通過開發者工具,發現請求是get的,我這里就用get的
response.encoding = response.apparent_encoding
response.raise_for_status()
response.encoding = 'utf-8'
selector = parsel.Selector(response.text)
allData = selector.css('#comments div.comment-item')
for item in allData:
user = item.css('.comment-info a::text').get() # 獲取評論人的名稱
islook = item.css('.comment-info span::text').get() # 是否看過
# islook = item.css('.comment-info span:nth-child(2)::text').get() # 是否看過
isrecommended = item.css('.comment-info span::attr(title)').get() # 推薦力度
# isrecommended = item.css('.comment-info span:nth-child(3)::attr(title)').get() # 推薦力度
ratetime = item.css('.comment-info span:nth-child(4)::attr(title)').get().strip() # 評論時間
# followers = item.css('.comment-vote span::text').get() # 點贊數量
followers = item.css('.comment-vote span::text').get() # 點贊數量
print(followers)
# content = item.css('.comment-content .short::text').get() # 評論內容
content = item.css('.comment-content span::text').get()
csvwriterdict = {
'評論人': user,
'是否看過': islook,
'推薦力度': isrecommended,
'評論時間': ratetime,
'獲贊數量': followers,
'評論內容': content,
}
print(csvwriterdict)
# 將上面的字典寫入到csv文檔
csvWriter.writerow(csvwriterdict)
csvFile.close() # 關閉文件
本來想用bs4爬的,看到某大神用parsel進行數據解析,學習下。存儲的效果如下:

留幾個問題,作為自己的動力。
1,用bs4或者selenium重新爬一次上面的項目;
2,做些可視化;
3,利用pandas的格式進行保存。
懶了,有空再做這幾個。
