Request & Response¶
我们通过 HttpRequest
和 HttpResponse
封装爬取的请求和对应的结果。
通常情况下, HttpRequest
一部分来自于spider中 start_requests()
方法生成的初始请求,另一部分来自于 parse()
方法解析页面得到的新的请求。
针对每个 HttpRequest
,如果请求成功xpaw会生成对应的 HttpResponse
,一般无需我们自己去构造 HttpResponse
。
Request API¶
-
class
xpaw.http.
HttpRequest
(url, method="GET", body=None, params=None, headers=None, proxy=None, timeout=20, verify_ssl=False, allow_redirects=True, auth=None, proxy_auth=None, priority=None, dont_filter=False, callback=None, errback=None, meta=None, render=None)¶ 用户通过此类封装HTTP请求。
Parameters: - url (str or
URL
) – URL地址 - method (str) – HTTP method,
GET
、POST
等 - body (bytes or str or dict) – 请求发送的数据。如果类型为
dict
,会默认为发送json格式的数据。 - params (dict) – 请求参数
- headers (dict or
HttpHeaders
) – HTTP headers - proxy (str) – 代理地址
- timeout (float) – 请求超时时间
- verify_ssl (bool) – 是否校验SSL
- allow_redirects (bool) – 是否自动重定向
- auth (tuple) – 认证信息,用户名和密码
- proxy_auth (tuple) – 代理认证信息,用户名和密码
- priority (float) – 请求的优先级
- dont_filter (bool) – 是否经过去重过滤器
- callback (str or method) – 请求成功时的回调函数,必须是spider的成员函数,也可以传递递函数名称
- errback (str or method) – 请求失败时的回调函数,必须是spider的成员函数,也可以传递函数名称
- meta (dict) –
meta
属性的初始值,用于存储请求相关的元信息 - render – 是否使用浏览器渲染
-
url
¶ URL地址
-
method
¶ HTTP method,
GET
、POST
等
-
body
¶ 请求发送的数据
-
headers
¶ HTTP headers
-
proxy
¶ 代理地址
-
timeout
¶ 请求超时时间
-
verify_ssl
¶ 是否校验SSL
-
allow_redirects
¶ 是否自动重定向
-
auth
¶ 认证信息,用户名和密码
-
proxy_auth
¶ 代理认证信息,用户名和密码
-
priority
¶ 请求的优先级
-
dont_filter
¶ 是否经过去重过滤器。xpaw会根据此属性决定该请求是否经过去重过滤器,如果经过去重过滤器,被认定为重复的请求会被忽略。
-
callback
¶ 请求成功时的回调函数,必须是spider的成员函数,也可以传递递函数名称。
-
errback
¶ 请求失败时的回调函数,必须是spider的成员函数,也可以传递函数名称。
-
render
¶ 是否使用浏览器渲染
-
copy
()¶ 复制request
-
replace
(**kwargs)¶ 复制request并替换部分属性
- url (str or
-
class
xpaw.http.
HttpHeaders
¶ 同
tornado.httputil.HTTPHeaders
。
Response API¶
-
class
xpaw.http.
HttpResponse
(url, status, body=None, headers=None, request=None, encoding=None)¶ Parameters: - url (str) – URL地址
- status (int) – HTTP状态码
- body (bytes) – HTTP body
- headers (dict or
HttpHeaders
) – HTTP headers - request (HttpRequest) – 爬虫请求
- encoding (str) – HTTP body的编码格式
-
url
¶ URL地址,如果是xpaw生成的response则类型为
URL
。
-
status
¶ HTTP状态码
-
body
¶ HTTP body
-
encoding
¶ 指定HTTP body的编码,如果没有指定,则会根据response的header和body进行自动推断。
-
headers
¶ HTTP headers,如果是xpaw生成的response则类型为
HttpHeaders
。
-
request
¶ 对应的
HttpRequest
-
meta
¶ 只读属性,即为对应的
HttpRequest
的meta
属性。
-
copy
()¶ 复制response。
-
replace
(**kwargs)¶ 复制response并替换部分属性。