首先,新建项目:
1、定义爬取字段
2、定义Rule规则
查看网页源码发现,电影链接为的形式,但是我们只需要类目中的电影而不需要推荐的电影:
所以:
3、定义提取影片信息规则
观察网页源码,发现页面结构并不是统一的:
有的信息在p标签中包裹,但是也有一些信息在div标签中。而且,由于主演人数不同,标签个数也不确定。所以,用xpath进行提取不是那么的方便了。这种情况就需要选用正则表达式来进行筛选。
观察网页编码,为
有些小众的电影并没有评分。
所以,筛选规则为:
经测试发现,网站的迅雷下载链接是用js动态生成的。这就要用到selenium了。
最后,pipelines中保存数据:
运行爬虫,得到第一页的30条数据:
二、修改项目为RedisCrawlSpider爬虫
1、首先修改爬虫文件
① RedisCrawlSpider修改很简单,首先需要引入RedisCrawlSpider:
② 将父类中继承的改为继承:
③ 因为slaver端要从redis数据库中获取爬取的链接信息,所以去掉 和 ,并添加
④ 增加方法,动态获取,[理论上要加这个,但是实测加了爬取的时候链接都被过滤了,所以我没加,暂时没发现有什么影响]
2、修改setting文件
① 首先要指定redis数据库的连接参数:
② 指定使用的调度器
③ 指定使用的去重
④ 指定排序爬取地址时使用的队列
⑤ 设置断点续传,也就是不清理redis queues
⑥ 默认情况下,只记录第一个重复请求。将设置为会记录所有重复的请求。
⑦ 配置将写入为 的redis的list中,供后面的分布式处理item
3、增加爬虫信息字段(可选)
由于会有多个slaver端,所以可加一个爬虫名字的字段和时间字段来区分是哪个爬虫在什么时间爬到的信息。
① item中增加字段
② pipelines中新增类: