scrapy_spider基本使用方法

spider作用

在scrapy中,网页的链接的配置,抓取逻辑,解析逻辑都是在spider中完成的,简单的说spider完成了两件事:

  • 定义网页爬取的动作
  • 解析爬取下来的网页

spider运行流程

  • 初始化url,初始化request,并设置回调方法callback
  • 当reques成功请求并返回,将返回的respons作为参数传给回调方法
  • 在callback回调方法中处理数据,返回的结果有两种,一种是直接解析,返回字典或者item对象,进行保存,或者是返回一个链接,并用此链接构造request,并设置新的回调方法,返回request
  • 如果返回的是request,请求成功之后得到的response又会作为参数传给新的回调方法,进行解析,最后保存

spider类的分析

spider类默认了start_request方法实现,读取并请求start_urls属性,并将返回的结果调用parse方法解析结果

基础属性
属性描述
name爬虫名称
allowed_domains允许爬取的域名
start_uelsURL列表

常用方法

方法描述
start_requests生成初始请求
parse没有response回调方法时候,自动被调用 ,负责处理response
closed当spider关闭时,被调用,定义释放资源的一些操作,或其他收尾操作

重写start_requests方法

spider会自动读取start_requests,然后生成request,并没有为request指定callback,然后会自动调用sparse方法。
因此,如果我们想要自定义初始请求,就可以在spider中重写start_requests。

spider发起post请求

当然除了发起get请求,还可以发送post请求,

post请求一般分为两种,一种是以FormData形式提交表单,一种是发送JSON数据
二者分别可以用,FormRequest和JsonRequest类实现。

request和response参数

在scrapy中,request对象实际上是指的scrapy.http.Request的一个实例,他包含了http请求的基本信息 ,
用这个request类可以构造request对象发送http请求,它会被engine交给Downloader进行处理,返回一个response对象

属性描述
url网页的链接
callbackreque回调方法,定义在spider类里面,并且需要一个response参数,如果不被指定,默认使用spider类里面的parse方法
methodrequest方法,默认为get还可以设置为post,put,delete等
metarequest请求携带的额外参数
bodyrequest内容,即request body,往往request body 是post请求,我们可以使用Formrequest和Jesonrequest实现post请求
headersRequest headers,字典形式
cookiesrequest携带的cookie,字典和列表形式
prorityRequest优先级,默认为0,这个优先级是给scheduler做request调度使用的,数值越大,优先级越高
dont_filterrequest不去重
值得注意的是,meta参数是一个十分有用而且容易扩展的参数,它可以用字典的形式传递,包含的信息不受限制,所以scrapy的·插件·会·基于·meta参数做一些特殊的处理

在默认情况下,scrapy就预留了一些特殊的key作为特殊处理

比如request.meta[‘proxy’]可以用来设置请求时候的代理

request被downloader执行之后,就得到了一个downloader结果,它代表的是http响应之后的结果

属性描述
urlrequest url
statusresponse状态码,如果请求成功就是200
headersresponse headers,是一个字典
bodyresponse body,结果是bytes类型
requestresponse对应的request对象
certificate代表SSL证书对象
ip_address代表服务器的ip地址
urljoin是一个url的处理方法,可以传入当前页面的url,该方法处理后返回的就是一个绝对的url
follow/follow_all是一个根据url来生成后续request的方法,和直接构造request不同的是,该方法可以相对的url
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嚄825

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值