使用Scrapy爬取豆瓣电影Top250
简介
豆瓣经典电影Top250部排行是经典的爬虫案例,属于分页式总入口,详情页有限发散层级(延伸一级就够)的梳状网页结构。无需登录即可获取页面信息,网页属静态内容,没有交互及异步加载,可直接请求并解析。
站点
https://movie.douban.com/top250
爬取目标
从电影目录收集基本标题及详情页链接,依次翻页收集所有排名电影。
在各详情页收集电影信息及封面图片。
分析网页结构
电影列表页面


电影详情页面
代码设计
使用scrapy命令新建项目
得到如下目录结构

对settings.py的修改:
ROBOTSTXT_OBEY = False,因为默认scrapy会下载robot.txt文件,以分析并遵守站点的爬虫限制规则。而豆瓣在对提供了无效User-Agent的请求是返回403禁止的,需要将此选项关闭。
DOWNLOAD_DELAY = 3,开启限制请求频率,以免影响网站运营,默认是各请求间有3秒等待
scrapy shell的使用,可辅助调试,查找元素
页面信息提取说明,有些字段dom节点的写法不统一,需要特殊处理,为了方便维护,使用专门的extract_xxx函数封装,以后无论页面如何变动,调用方无需改动,只需要更新相关的extract函数
执行
也可以用main的方式去启动,方便断点调试