点此查看代码
题目说明
网页 “http://movie.shtimes.com/FilmId/ ”中包含观众对电影的评分信息,请编写程序抓取网页(网页样本保存于task0202目录中)上电影的评分信息并计算其统计信息(统计方法指对某部电影的评分求极值或求平均值),本题的赛前抽取参数是统计方法以及网页样本,请参赛学生将本题的答案保存于ans0202.txt文件中,注意ans0202.txt文件中只能包含一个浮点型数字,保留4位小数
思路
- 读取本地task0202目录中网页内容
- 通过正则表达式获取电影id(代码见handel.py)
- 根据电影id构造评分网页url(评分页面url规律为:https://movie.douban.com/subject/ + 影片id + /reviews)
- 编写scrapy代码(spiders文件夹中gradeSpider.py文件),将构造的评分网页url放入start_urls
- 由于豆瓣网具有反扒虫(尝试过设置代理,但代理质量差速度太慢,所以使用cookies,但cookies具有时效性),在settins.py文件中开启延时(DEOWNLOAD_DELAY=3),
爬虫类中重写start_requests函数(设置cookies和headers) - 编写parse函数获取电影名和评分(评分由文字转为分数,格式为{‘movie_name’: ‘麦兜·当当伴我心的影评 (584)’, ‘grade’: 5},循环获取下一页)
- 编写中间件pipelines的函数process_item,将所有电影名和评分放入变量result
- 编写中间件pipelines的__del__函数,用于在爬虫结束时将result写入文件(格式为{“金刚:骷髅岛的影评 (1175)”: {“avg_grade”: “3.6000”, “max_grade”: 5, “min_grade”: 2})