爬取豆瓣电影-长津湖短评 - Python
电影《长津湖》是今年电影界的神,其他的不说,我来爬些豆瓣对长津湖的短评看看,暂时不做可视化。
"""
爬取一下豆瓣的长津湖短评,爬取短评的六个内容:
评论人,是否看过,星级(推荐力度),时间,获赞数,评论内容
将爬取的内容存储到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的格式进行保存。
懒了,有空再做这几个。

浙公网安备 33010602011771号