前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评,然后下载在excel表格里面查看。
目标链接:https://movie.douban.com/subject/26794435/comments
在网上找了一个开源的小例子,但是豆瓣的网页结构以及有所调整,爬到的时间和评论都是空的,对代码进行了一些修改,可以爬取豆瓣最新的网页里面某部电影的短评,如果需要其他电影短评,直接改一下参数链接即可。
#_*_coding:utf-8_*_
import requests
import re
import csv
import time
from lxml import etree
def get_one_page(url):
try:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'}
response = requests.get(url,headers=headers,timeout=10)
if response.status_code == 200:
# print(response.text)
return response
return None
except EOFError as e:
print(e)
return None
def parse_one_page(res,info):
info = []
res = etree.HTML(res.content.decode())
nodes_list = res.xpath('//div[@class="comment-item"]')
for node in nodes_list:
comic = {}
comic['User'] = node.xpath('.//span[@class="comment-info"]/a/text()')[0].strip()
comic['Time'] = node.xpath('.//span[@class="comment-info"]/span[3]/text()')[0].strip()
comic['Comment'] = node.xpath('.//span[@class="short"]/text()')[0].strip()
print(comic)
info.append(comic)
return info
def write_to_file(info):
with open('《哪吒之魔童降世》短评.csv','a',newline='') as f:
fieldnames = ['User','Time','Comment']
writer = csv.DictWriter(f,fieldnames=fieldnames)
writer.writeheader()
try:
writer.writerows(info)
except:
pass
def main(start):
info = {}
url = 'https://movie.douban.com/subject/26794435/comments?start=' + str(start) + '&limit=20&sort=new_score&status=P&percent_type='
html = get_one_page(url)
data = parse_one_page(html,info)
write_to_file(data)
if __name__ == '__main__':
for i in range(10):
main(i*20)
print('第{}本页采集完毕。'.format(str(i))) # 采集完一页后的标识
time.sleep(1) # 采集完一页休息一秒
运行之后
自动生成了一个excel的表格
下载表格,打开查看,按照顺序把网页上的短评都抓取下来啦。
参考链接:https://zhuanlan.zhihu.com/p/36584668
原文作者:祈澈姑娘 技术博客:https://www.jianshu.com/u/05f416aefbe1
90后前端妹子,爱编程,爱运营,文艺与代码齐飞,魅力与智慧共存的程序媛一枚,欢迎关注【编程微刊】公众号,回复【领取资源】,500G编程学习资源干货免费送。