关于爬虫中scrapy.Request的更多参数用法

目录
  • 爬虫中scrapy.Request的更多参数
    • scrapy.Request的参数
    • meta参数
  • scrapy中Request中常用参数

爬虫中scrapy.Request的更多参数

scrapy.Request的参数

scrapy.Request(url[,callback,method="GET",headers,body,cookies,meta,dont_filter=Fallse])

参数解释:

中括号中的参数为可选参数,可写可不写

  • callback:表示当前的url响应交给哪个函数去处理(默认为parse函数)
  • meta:实现数据在不同解析函数中传递,meta默认带有部分数据,比如下载延迟、请求深度等(用于解析方法之间的数据传递,常用在一条数据分散在多个不同结构的页面中的情况)
  • dont_filter:默认为False,会过滤请求的url地址,即请求过的url地址不会继续被请求,对需要重复请求的url地址可以把它设置为True,start_urls中的地址会被反复请求,否则程序不会启动
  • headers:接收一个字典,其中不包括cookies
  • cookies:接收一个字典,专门放置cookies
  • method:指定POST或GET请求
  • body:接收json字符串,为post的数据发送payload_post请求

meta参数

meta的作用:meta可以实现数据在不同的解析函数中的传递

在爬虫文件的parse方法中,增加一个函数parse_detail函数(用来解析另一个页面):

def parse(self,response):
    ...
    yield scrapy.Request(detail_url, callback=self.parse_detail,meta={"item":item})
...

def parse_detail(self,response):
    #获取之前传入的item
    item = resposne.meta["item"]

就相当于,把parse中解析的数据存到了meta字典中,对应的key为item;而在另一个函数(parse_detail)中,通过meta字典中的key:item来提取parse中的数据,从而实现不同页面数据的拼接

注意:

  • meta参数是一个字典
  • meta字典中有一个固定的键proxy,表示代理ip

scrapy中Request中常用参数

  • url: 就是需要请求,并进行下一步处理的url
  • callback: 指定该请求返回的Response,由那个函数来处理。
  • method: 一般不需要指定,使用默认GET方法请求即可
  • headers: 请求时,包含的头文件。一般不需要。内容一般如下:使用 urllib2 自己写过爬虫的肯定知道
Host: media.readthedocs.org
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
Accept: text/css,*/*;q=0.1
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://scrapy-chs.readthedocs.org/zh_CN/0.24/
Cookie: _ga=GA1.2.1612165614.1415584110;
Connection: keep-alive
If-Modified-Since: Mon, 25 Aug 2014 21:59:35 GMT
Cache-Control: max-age=0
  • meta: 比较常用,在不同的请求之间传递数据使用的。字典dict型
request_with_cookies = Request(url="http://www.example.com",
       cookies={'currency': 'USD', 'country': 'UY'},
       meta={'dont_merge_cookies': True})
  • encoding: 使用默认的 'utf-8' 就行。

dont_filter: indicates that this request should not be filtered by the scheduler. 
     This is used when you want to perform an identical request multiple times, 
     to ignore the duplicates filter. Use it with care, or you will get into crawling loops. 
     Default to False.

  • errback: 指定错误处理函数

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 通过淘宝数据爬虫学习python scrapy requests与response对象

    目录 Request 对象 Response 对象 ItemPipeline LinkExtractor 提取链接 爬虫编码时间 Request 对象 在 scrapy 中 Request 对象代表着请求,即向服务器发送数据,该对象的构造函数原型如下所示: def __init__(self, url, callback=None, method='GET', headers=None, body=None, cookies=None, meta=None, encoding='utf-8',

  • Python爬虫框架-scrapy的使用

    Scrapy Scrapy是纯python实现的一个为了爬取网站数据.提取结构性数据而编写的应用框架. Scrapy使用了Twisted异步网络框架来处理网络通讯,可以加快我们的下载速度,并且包含了各种中间件接口,可以灵活的完成各种需求 1.安装 sudo pip3 install scrapy 2.认识scrapy框架 2.1 scrapy架构图 Scrapy Engine(引擎): 负责Spider.ItemPipeline.Downloader.Scheduler中间的通讯,信号.数据传递

  • scrapy爬虫:scrapy.FormRequest中formdata参数详解

    1. 背景 在网页爬取的时候,有时候会使用scrapy.FormRequest向目标网站提交数据(表单提交).参照scrapy官方文档的标准写法是: # header信息 unicornHeader = { 'Host': 'www.example.com', 'Referer': 'http://www.example.com/', } # 表单需要提交的数据 myFormData = {'name': 'John Doe', 'age': '27'} # 自定义信息,向下层响应(respon

  • python入门之scrapy框架中Request对象和Response对象的介绍

    目录 一.Request对象 二.发送POST请求 三.Response对象 一.Request对象 Request对象主要是用来请求数据,爬取一页的数据重新发送一个请求的时候调用,其源码类的位置如 下图所示: 这里给出其的源码,该方法有很多参数: class Request(object_ref):     def __init__(self, url, callback=None, method='GET', headers=None, body=None,                

  • 关于爬虫中scrapy.Request的更多参数用法

    目录 爬虫中scrapy.Request的更多参数 scrapy.Request的参数 meta参数 scrapy中Request中常用参数 爬虫中scrapy.Request的更多参数 scrapy.Request的参数 scrapy.Request(url[,callback,method="GET",headers,body,cookies,meta,dont_filter=Fallse]) 参数解释: 中括号中的参数为可选参数,可写可不写 callback:表示当前的url响应

  • JScript中遍历Request表单参数集合的方法

    JScript下有一个Enumerator对象可以遍历集合.根据它的文档写了以下程序,可以遍历整个Request.QueryString集合: 复制代码 代码如下: var params = new Enumerator(Request.QueryString); while (!params.atEnd()) { Response.Write(params.item() + ":" + Request.QueryString(params.item()) + "<br

  • postgresql中wal_level的三个参数用法说明

    wal_level中有三个主要的参数:minimal.archive和hot_standby 1.minimal是默认的值,它仅写入崩溃或者突发关机时所需要的信息(不建议使用). 2.archive是增加wal归档所需的日志(最常用). 3.hot_standby是在备用服务器上增加了运行只读查询所需的信息,一般实在流复制的时候使用到. 补充:postgresql WAL相关参数 配置文件 # - Settings - wal_level = minimal # minimal, replica

  • postgresql 中的几个 timeout参数 用法说明

    今天整理了下 postgresql 几个 timeout 参数 select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 10.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat

  • python中scrapy处理项目数据的实例分析

    在我们处理完数据后,习惯把它放在原有的位置,但是这样也会出现一定的隐患.如果因为新数据的加入或者其他种种原因,当我们再次想要启用这个文件的时候,小伙伴们就会开始着急却怎么也翻不出来,似乎也没有其他更好的搜集办法,而重新进行数据整理显然是不现实的.下面我们就一起看看python爬虫中scrapy处理项目数据的方法吧. 1.拉取项目 $ git clone https://github.com/jonbakerfish/TweetScraper.git $ cd TweetScraper/ $ pi

  • Scrapy中如何向Spider传入参数的方法实现

    在使用Scrapy爬取数据时,有时会碰到需要根据传递给Spider的参数来决定爬取哪些Url或者爬取哪些页的情况. 例如,百度贴吧的放置奇兵吧的地址如下,其中 kw参数用来指定贴吧名称.pn参数用来对帖子进行翻页. https://tieba.baidu.com/f?kw=放置奇兵&ie=utf-8&pn=250 如果我们希望通过参数传递的方式将贴吧名称和页数等参数传给Spider,来控制我们要爬取哪一个贴吧.爬取哪些页.遇到这种情况,有以下两种方法向Spider传递参数. 方式一 通过

  • Python中Scrapy爬虫图片处理详解

    下载图片 下载图片有两种方式,一种是通过 Requests 模块发送 get 请求下载,另一种是使用 Scrapy 的 ImagesPipeline 图片管道类,这里主要讲后者. 安装 Scrapy 时并没有安装图像处理依赖包 Pillow,需手动安装否则运行爬虫出错. 首先在 settings.py 中设置图片的存储路径: IMAGES_STORE = 'D:/' 图片处理相关的选项还有: # 图片最小高度和宽度设置,可以过滤太小的图片 IMAGES_MIN_HEIGHT = 110 IMAG

  • scrapy在python爬虫中搭建出错的解决方法

    在之前文章给大家分享后不久,就有位小伙伴跟小编说在用scrapy搭建python爬虫中出现错误了.一开始的时候小编也没有看出哪里有问题,好在经过不断地讨论与测试,最终解决了出错点的问题.有同样出错的小伙伴可要好好看看到底是哪里疏忽了,小编这里先不说出问题点. 问题描述: 安装位置: 环境变量: 解决办法: 文件命名叫 scrapy.py,明显和scrapy自己的包名冲突了,这里 class StackOverFlowSpider(scrapy.Spider) 会直接找当前文件(scrapy.py

  • Symfony实现行为和模板中取得request参数的方法

    本文实例讲述了Symfony实现行为和模板中取得request参数的方法.分享给大家供大家参考,具体如下: 一.模板中取得参数 <?php echo $sf_request->getParameter('name','namespace');?> <?php echo $sf_request->getParameter('name');?> 二.行为中取得参数 $request->getParameter('name'); //模板中取得参数 <?php e

  • 在拦截器中读取request参数,解决在controller中无法二次读取的问题

    目录 拦截器中读取request参数,在controller中无法二次读取 新建类 添加过滤器 使用拦截器时,controller中不能再次获取body中的参数 解决办法 1.获取body信息 2.重新写入 3.注册过滤器 拦截器中读取request参数,在controller中无法二次读取 新建类 package com.ouyeelbuy.mc.common.base; import javax.servlet.ReadListener; import javax.servlet.Servl

随机推荐