介绍Scrapy框架的request对象和response对象 通常,Request对象在爬虫程序中生成并传递到系统,直到它们到达下载程序,后者执行请求并返回一个Response对象,该对象返回到发出请求的爬虫程序 Request类和Response类都有一些子类,子类用来添加基类中不必要的功能。这些在下面的请求子类和响应子类中描述
Request对象一个Request对象表示一个HTTP请求,它通常是在爬虫中生成,并由下载器执行,从而返回Response 基础参数 :url ——请求的url
callback ——请求回来的reseponse处理函数,也叫回调函数
meta ——用来在“页面”之间传递数据
- meta是一个dict,主要用来在解析函数之间传递值
- 比如:在
parse() 给item某些字段提取了值,并且提取出了一个新的URL,item另外一些字段需要在这个新的URL的response里面提取,为此定义一个parse_item() 解析函数用于处理这个response。在用request发送这个新的URL请求的时候,使用parse_item()作为回调函数,并使用meta传递原来已经提取的item字段给parse_item()里的response - Request对象接受一个meta参数,一个字典对象,同时Response对象有一个meta属性可以取到相应request传过来的meta
- 一旦此参数被设置, 通过参数传递的字典将会被浅拷贝
headers ——页面的headers数据
cookies ——设置页面的cookies
基础高级参数encoding ——请求的转换编码
priority ——链接优先级
- 优先级越高,越优先爬取,但不可以序列化
序列化 (Serialization) :将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象
dont_filter ——强制不过滤 scrapy会对request的URL去重,加上dont_filter则告诉它这个URL不参与去重
errback ——错误回掉 errback更适合用于检查记录请求产生的错误,但是不适合请求的重试
Request对象方法copy() :复制一个一模一样的对象
replace() :对对象参数进行替换
Request.meta 一些特殊的keysdont_redirect :如果 Request.meta 包含 dont_redirect 键,则该request将会被RedirectMiddleware忽略dont_retry :如果 Request.meta 包含 dont_retry 键, 该request将会被RetryMiddleware忽略handle_httpstatus_list :Request.meta 中的 handle_httpstatus_list 键可以用来指定每个request所允许的response codehandle_httpstatus_all :handle_httpstatus_all为True ,可以允许请求的任何响应代码dont_merge_cookies :Request.meta 中的dont_merge_cookies设为TRUE,可以避免与现有cookie合并cookiejar :Scrapy通过使用 Request.meta中的cookiejar 来支持单spider追踪多cookie session。 默认情况下其使用一个cookie jar(session),不过可以传递一个标示符来使用多个dont_cache :可以避免使用dont_cache元键等于True缓存每个策略的响应redirect_urls :通过该中间件的(被重定向的)request的url可以通过 Request.meta 的 redirect_urls 键找到bindaddress :用于执行请求的传出IP地址的IPdont_obey_robotstxt :如果Request.meta将dont_obey_robotstxt键设置为True,则即使启用ROBOTSTXT_OBEY,RobotsTxtMiddleware也会忽略该请求download_timeout :下载器在超时之前等待的时间(以秒为单位)download_maxsize :爬取URL的最大长度download_latency :自请求已经开始,即通过网络发送的HTTP消息,用于获取响应的时间量 该元密钥仅在下载响应时才可用。虽然大多数其他元键用于控制Scrapy行为,但是这个应用程序应该是只读的download_fail_on_dataloss :是否在故障响应失败proxy :可以将代理每个请求设置为像http:// some_proxy_server:port这样的值ftp_user :用于FTP连接的用户名ftp_password :用于FTP连接的密码referrer_policy :为每个请求设置referrer_policymax_retry_times :用于每个请求的重试次数。初始化时,max_retry_times元键比RETRY_TIMES设置更高优先级
Response对象基础参数url ——请求的url
body ——请求回来的html
meta ——用来在“页面”之间传递数据
headers ——页面的headers数据
cookies ——设置页面的cookies
Request ——发出这个response的request对象
Response对象方法copy() :同request
replace() :同request
urljoin() :由于将页面相对路径改为绝对路径
follow() :对相对路径进行自动补全
|