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