1、Request对象
一个Request对象代表着一个HTTP请求,通常在Spider类中产生,然后传递给下载器,最后返回一个响应。
类原型:class scrapy.http.Request(
url(string), # 请求的连接
callback(callable), #指定用于解析请求响应的方法,如果没有指定,默认使用spider的parse()方法
method(string) = "GET", # HTTP请求方式,默认为GET
headers(dict), # 请求头,如果传入的为None,请求头不会被发送
meta(dict), # 可以用来初始化Request.meta属性,比如传值给下一个parse_func()。
body(str or unicode), # 请求的body
cookies(dict or list), # 请求的cookie信息,接受字典{}或列表字典[{}]
endcoding(string)='utf-8', #请求的编码,默认为UTF-8
priority(int)=0, # 请求的优先级,默认为0,优先级被调度器用来安排处理请求的顺序
dont_filter(boolean)=False, # 表明该请求不应由调度器过滤。
errback(callable), # 如果在处理请求的过程中出现异常,指定的方法将会被调用
)
常用属性和方法:url、method、headers、body、meta、copy()、replace()
scrapy为Request.meta定义了一些特殊的键值,如Request.meta = {"dont_merge_cookies":True},其他的还有dont_redirect、dont_retry等。
Request的子类FormRequest:https://www.cnblogs.com/nuochengze/p/12875876.html
FormRequest的类方法form_response: https://www.cnblogs.com/nuochengze/p/12875947.html
2、Response对象
Response对象代表着HTTP响应,Response通常是从下载器获取然后交给Spider处理。
类原型:scrapy.http.Response(
url(string), #响应的url
status(int)=200, #响应码,默认为200
headers(dict), #响应头信息
body(str), #响应的body
meta(dict), #用来初始化Response.meta
flags(list), #用来初始化Response.flags
)
常用的方法和属性:url、status、headers、body、request、meta、flags、copy()、replace()、urljoin(url)(用来将Response.url和一个相对url,构造成一个绝对url,相当于对urlparse.urljoin进行包装)
Response有一个子类TextResponse,TextResponse在Response的基础上添加了智能编码的功能。
TextResponse的类原型:scrapy.http.TextResponse(url,[encoding[,...]]