Scrapy实现多页的爬取
1·scrapy实现多页的爬取
多页爬取的思路: 1,在start_urls中构建url的列表。逐一请求 2,定义一个page属性,利用if判断来实现多页 3,获取下一页实现多页,此种方式是比较灵活的。
2 深度爬取
1,深度爬取:从列表页到详情页,甚至是更后续的页面的数据的获取 2,深度爬虫: 通常我们要爬取的数据隐藏在form表单之后, 需要越过表单进行爬取
# 深度爬取 访问列表页, 从列表页获取详情页的连接 手动发起请求并制定回调 在回调中解析详情页的数据 将目标数据装载在临时容器item中提交给管道 # 请求传参 1.请求如何传参: 通过meta参数 meta是一个字典 meta = { 'title': title } 2.取出传递的参数 title = response.meta['title'] # 中括号里面的title要和meta字段的键对应
# https://www.guidaye.com/dp/
3.Item
1.item是一个类 2.item既然是一个类, 为什么能够作为一个容器呢 3.item是如何携带着解析出来的目标数据到管道
1.item是一个类 面向对象: 面向过程: 创建一个小助手: 图纸--> 模板---> 类 类 ---> 创建一个对象(实例化) 类有一些方法: __kdfkd__ --> 魔术方法(双下划线方法) __init__(): 初始化方法, 帮你初始化一定信息 __new__(): 构造方法, 在内存中为你开辟一块空间放置这个对象 __del__() __str__() __repr__()
import scrapy class GgsItem(scrapy.Item): # define the fields for your item here like: title = scrapy.Field() # 给item类定义一个属性 content = scrapy.Field()
# 在爬虫中实例化一个item对象发生了什么: 1.在内存中创建一个对象的空间:__new__() 2.运行初始化方法为属性赋值或为属性赋值做准备 3.item['title'] = title