爬虫:
0、设置起始url, follow=True
1、获取分类
获取起始url的响应,在响应中获取分类的url地址。
构造请求,请求多个分类清单。follow=True
2、获取清单
拿到清单页的响应,获取清单页中详情的url地址。
构造请求,请求多个详情。callback=解析函数
3、获取详情
拿到详情页的响应,提取数据。
对于一些额外的数据,构造额外的请求 callback=解析函数
4、获取额外数据
获取响应,提取数据
把提取到的数据交给管道处理。
crawlspider的作用,简化获取分类和清单页url地址的编写
创建:
scrapy genspider -t crawl 爬虫名 范围
与之前basic爬虫的区别:
1、继承的类不同CrawlSpider
2、多了一个rules其中包含很多的Rule规则
3、不需要重写parse方法。
Rule中的两个重要参数:
指定匹配到url路径后,scrapy如何处理拿到的响应。如果时follow=True,继续让他通过Rules规则过滤,如果callback有设置,那么就调用相应的解析函数对数据进行提取。
1、callback
2、follow
下载器中间件:
位置:引擎和下载器之间
1、处理从引擎到下载器的请求
process_request(request, spider)
返回值:
None,不对request进行拦截,请求会继续提交到下载器下载。可以在函数中对request请求设置一些属性,比如像cookie、user-agent、proxy
Request,此次请求不会到下载器,返回的请求会添加到调度器中,以后再重新请求。
Response,此次请求不会到下载器,返回的响应会提交到爬虫进行数据处理。
2、处理从下载器下载回来的响应
process_response(request, response, spider)
返回值:
Response,此次响应回来的响应对象,会提交给爬虫进行后续处理。
Request,此次响应完后,发现可能需要重新发送请求再获取响应,返回请求对象后,引擎会将request对象交由调度器保存,随后再发送请求。
None,丢弃此次响应的响应对象,不会进行后续处理。
关于Scrapy中Cookie的使用
setting.py中有一个配置 COOKIES_ENABLED = True默认为True
意义是,把响应中的Cookie取出进行保存,再下次请求时携带到服务器。
我们如果需要模拟登陆,就需要再第一次请求(start_url)中手动添加Cookie,添加方法就是手动创建起始页的请求对象,并在请求对象中使用cookies参数添加cookie。需要重写一个方法start_request方法。