介绍
Request类是一个http请求的类,对于爬虫而言是一个很重要的类。通常在Spider中创建这样的一个请求,在Downloader中执行这样的一个请求。同时也有一个子类FormRequest继承于它,用于post请求。
安装scrapy:pip install scrapy
Spider中通常用法: yield scrapy.Request(url = ‘explain.com’)
类属性和方法有:
url
method
headers
body
meta
copy()
replace([url, method, headers, body, cookies, meta, encoding, dont_filter, callback, errback])
Request
class scrapy.http.Request(url[, callback, method=‘GET’, headers, body, cookies, meta, encoding=‘utf-8’, priority=0, dont_filter=False, errback, flags])
参数说明
参数 | 说明 |
---|---|
url | 请求的url |
callback | 回调函数,用于接收请求后的返回信息,若没指定,则默认为parse()函数 |
method | http请求的方式,默认为GET请求,一般不需要指定。若需要POST请求,用FormRequest即可 |
headers | 请求头信息,一般在settings中设置即可,也可在middlewares中设置 |
body | str类型,为请求体,一般不需要设置(get和post其实都可以通过body来传递参数,不过一般不用) |
cookies | dict或list类型,请求的cookiedict方式(name和value的键值对):cookies = {‘name1’ : ‘value1’ , ‘name2’ : ‘value2’} list方式:cookies = [{‘name’: ‘Zarten’, ‘value’: ‘my name is Zarten’, ‘domain’: ‘example.com’, ‘path’: ‘/currency’}] |
encoding | 请求的编码方式,默认为’utf-8’ |
priority | int类型,指定请求的优先级,数字越大优先级越高,可以为负数,默认为0 |
dont_filter | 默认为False,若设置为True,这次请求将不会过滤(不会加入到去重队列中),可以多次执行相同的请求 |
errback | 抛出错误的回调函数,错误包括404,超时,DNS错误等,第一个参数为Twisted Failure实例 |
flags | list类型,一般不会用到,发送请求的标志,一般用于日志记录 |
meta | 可用户自定义从Request到Response传递参数,这个参数一般也可在middlewares中处理yield scrapy.Request(url = ‘zarten.com’, meta = {‘name’ : ‘Zarten’}) 在Response中: my_name = response.meta[‘name’] |
proxy | 设置代理,一般在middlewares中设置,可以设置http或https代理:request.meta[‘proxy’] = ‘https://’ + ‘ip:port’ |
download_timeout | 设置请求超时等待时间(秒),通常在settings中设置DOWNLOAD_TIMEOUT,默认是180秒(3分钟) |
max_retry_times | 最大重试次数(除去第一次下载),默认为2次,通常在settings中 RETRY_TIMES设置 |
dont_redirect | 设为True后,Request将不会重定向 |
dont_retry | 设为True后,对于http链接错误或超时的请求将不再重试请求 |
handle_httpstatus_list | http返回码200-300之间都是成功的返回,超出这个范围的都是失败返回,scrapy默认是过滤了这些返回,不会接收这些错误的返回进行处理。不过可以自定义处理哪些错误返回:yield scrapy.Request(url= ‘https://httpbin.org/get/zarten’, meta= {‘handle_httpstatus_list’ : [404]}) |
handle_httpstatus_all | 设为True后,Response将接收处理任意状态码的返回信息 |
dont_merge_cookies | scrapy会自动保存返回的cookies,用于它的下次请求,当我们指定了自定义cookies时,如果我们不需要合并返回的cookies而使用自己指定的cookies,可以设为True. |
dont_cache | 设为True后,不会缓存 |
redirect_urls | |
bindaddress | 绑定输出IP |
dont_obey_robotstxt | 设为True,不遵守robots协议,通常在settings中设置 |
download_maxsize | 设置下载器最大下载的大小(字节),通常在settings中设置DOWNLOAD_MAXSIZE,默认为1073741824 (1024MB=1G),若不设置最大的下载限制,设为0 |
download_latency | 只读属性,获取请求的响应时间(秒) |