关于爬虫中scrapy.Request的更多参数用法
作者:黑马蓝汐 发布时间:2023-10-14 02:20:26
爬虫中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
:接收一个字典,其中不包括cookiescookies
:接收一个字典,专门放置cookiesmethod
:指定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
: 就是需要请求,并进行下一步处理的urlcallback
: 指定该请求返回的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
: 指定错误处理函数
来源:https://blog.csdn.net/qq_52262831/article/details/121867006


猜你喜欢
- 事务控制的核心——Connection在开始之前,先让我们回忆一下数据库较原始的JDBC是怎么管理事务的: //仅
- 一、准备工程文件1.创建工程leeoo2.在工程根目录下创建setup.py文件3.在工程根目录下创建同名package二、编辑setup.
- 最近遇到一个SQL Server服务器响应极度缓慢,并且出现客户端请求报错的情况,在数据库中的errorlog中出现磁盘请求超过15s才完成
- 一、问题的发现与提出在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1:代码段
- 上节回顾主要讲了协程、进程、异步IO多路复用。 协程和IO多路复用都是单线程的。epoll 在linux下通过这个模块libev
- 使用标准库importlib的import_module()函数、django的import_string(),它们都可以动态加载指定的 P
- 做为一个专职的页面重构者, 我们从事的工作简单的说就是“将设计稿转换成WEB页面”,这一过程可以很简单到直接把PSD从里导出成网页;也可复杂
- 目录前言创建对象方式一:方式二:更新对象方式一:方式二:方式三:查询检索全部对象:条件过滤:方式一:方式二:检索单个对象:总结前言上篇已经介
- frame标签有frameset、frame、iframe三种,frameset和其它普通标签没有区别,不会影响正常定位,而frame与if
- 代码实现如下:import win32com.client,os,timedef word_encryption(path, passwor
- 摘要:神经网络的训练的主要流程包括图像输入神经网络, 得到模型的输出结果,计算模型的输出与真实值的损失, 计算损失值的梯度,最后用梯度下降算
- <html> <head> <title>51windows.Net </title> &l
- 因为项目需要数据验证,看bootstrapValidator 还不错,就上手一直,完美兼容,话不多说。bootstrap:能够增加兼容性的强
- 本文实例讲述了Python3实现爬取简书首页文章标题和文章链接的方法。分享给大家供大家参考,具体如下:from urllib import
- 1、出现错误train_df = pd.read_csv( 'C:\Users\lenovo\Desktop\train.csv
- 一:unittest是python自带的一个单元测试框架,类似于java的junit,基本结构是类似的。基本用法如下: 1.用import
- 在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序
- 本文实例讲述了python中os操作文件及文件路径的方法。分享给大家供大家参考。具体分析如下:python获取文件上一级目录:取文件所在目录
- 所有数据库和状态文件都包含在其中。但是,在确定数据目录内容的布局中管理员有某些职责。本文讨论为什么要移动数据目录的各个部分(甚至是字典本身)
- MySQL使用于认证目的的用户名,与Unix用户名(登录名字)或Windows用户名无关。缺省地,大多数MySQL客户尝试使用当前Unix用