requests response,request和response用法
请求请求部分源码:
# 部分代码
类请求(object_ref):
def __init__(self,url,callback=None,method=GET ,headers=None,body=None,
cookies=无,元=无,编码=utf-8 ,优先级=0,
dont_filter=False,errback=None):
自我. encoding=编码#这个必须先设置
self.method=str(方法)上部()
自我. set_url(网址)
自我. set_body(正文)
断言isinstance(priority,int),请求优先级不是整数:%r %优先级
自我优先=优先权
断言回调或非错误返回,"没有回调就不能使用错误返回"
self.callback=回调
self.errback=errback
self.cookies=cookies或{}
self.headers=头(头或{},编码=编码)
self.dont_filter=dont_filter
自我. meta=dict(meta) if meta else None
@属性
定义元(自身):
如果自我. meta是无:
自我. meta={}
回归自我. meta其中,比较常用的参数:
网址:就是需要请求,并进行下一步处理的全球资源定位器(统一资源定位器)
回拨:指定该请求返回的回应,由那个函数来处理
方法:请求一般不需要指定,默认得到方法,可设置为获取,发布,上传等,且保证字符串大写
标题:请求时,包含的头文件一般不需要内容一般如下:
# 自己写过爬虫的肯定知道
主持人:media.readthedocs.org
用户代理:Mozilla/5.0(Windows NT 6.2;WOW64rv:33.0)壁虎/20100101火狐/33.0
接受:text/css,*/*;q=0.1
接受-语言:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
接受编码:gzip,deflate
推荐人:http://scrapy-CHS . readthedocs . org/zh _ CN/0.24/
cookie:_ ga=ga 12 .1612161515145461
连接:保持活动
修改时间:2014年年8月25日星期一格林威治时间21时59分35秒
缓存控制:最大年龄=0
元:比较常用,在不同的请求之间传递数据使用的字典词典型
request _ with _ cookies=Request(
url=http://www.example.com ,
cookies={ 货币:美元,国家: UY},
meta={ dont _ merge _ cookies :True }
)
编码:使用默认的 utf-8 就行
不要过滤:表明该请求不由调度器过滤这是当你想使用多次执行相同的请求,忽略重复的过滤器默认为错误
错误回复:指定错误处理函数响应编号部分代码
类响应(object_ref):
def __init__(self,url,status=200,headers=None,body= ,flags=None,request=None):
self.headers=头(头或{})
self.status=int(status)
自我. set_body(正文)
自我. set_url(网址)
自我请求=请求
self.flags=[]如果旗帜是无其他列表(标志)
@属性
定义元(自身):
尝试:
返回self.request.meta
除了属性错误:
引发AttributeError(Response.meta不可用,此响应\
不依赖于任何请求)大部分参数和上面的差不多:
状态:响应码
_set_body(body):响应体
_set_url(url):响应全球资源定位器(统一资源定位器)
自我请求=请求发送邮政请求可以使用产生刺痒感表单请求(网址,表单数据,回调)方法发送邮政请求如果希望程序执行一开始就发送邮政请求,可以重写蜘蛛;状似蜘蛛的物体;星形轮;十字叉;连接柄;十字头类的开始请求(自己)方法,并且不再调用开始网址里的网址类mySpider(scrapy .蜘蛛):
# start _ URLs=[ http://www举例com/]
定义开始请求(自身):
URL= http://www人人网com/plogin“做”
#表单请求是Scrapy发送邮政请求的方法
产生刺痒感表单请求(
url=url,
formdata={ email : Mr _ Mao _ hacker @ 163 com ,密码: axxxxx
xxe},
callback=self.parse_page
)
def parse_page(self,response):
#做点什么模拟登陆使用表单请求。发件人响应()方法模拟用户登录
通常网站通过实现对某些表单字段(如数据或是登录界面中的认证令牌等)的预填充。
使用Scrapy抓取网页时,如果想要预填充或重写像用户名、用户密码这些表单字段,可以使用表单请求。发件人响应()方法实现。
下面是使用这种方法的爬虫例子:
进口废品
类登录思考者(scrapy .蜘蛛):
name=example.com
start _ URLs=[ http://www。举例。com/users/登录。PHP ]
定义解析(自身,响应):
返回好斗的.表单请求。发件人回应(
回应,
formdata={ 用户名:约翰,密码:秘密 },
callback=self.after_login
)
def after_login(self,response):
#继续之前检查登录是否成功
如果响应中出现"身份验证失败",正文:
self.log(登录失败,level=log .错误)
返回
#通过已验证的会话继续抓取.知乎爬虫案例参考:zhihuSpider.py爬虫代码
#!/usr/bin/env python
# -*-编码:utf-8 -*-
从scrapy .蜘蛛导入爬行蜘蛛,规则
从scrapy.selector导入选择器
从scrapy.linkextractors导入链接提取器
从废料导入请求,表单请求
从zhihu.items导入ZhihuItem
类(爬行蜘蛛) :
name=胡志
allowed _ domains=[ www。胡志。com ]
start_urls=[
http://www.zhihu.com的
]
规则=(
规则(链接提取器(allow=(/question/\ d # .*?,)),callback=parse_page ,follow=True),
规则(链接提取器(allow=(/question/\ d ,)),回调=parse_page ,follow=True),
)
标题={
接受: */* ,
接受-语言:“恩——我们,恩;q=0.8,zh-TW;q=0.6,zh;q=0.4 ,
连接:保持活动,
content-Type ":" application/x-www-form-urlencoded;字符集=UTF-8 ,
用户代理:‘Mozilla/5.0(麦金塔;英特尔Mac OS X 10 _ 11 _ 5)苹果WebKit/537.36(KHTML像壁虎)Chrome/54。0 .2125 .111 Safari/537.36 ,
Referer: http://www.zhihu.com/
}
#重写了爬虫类的方法,实现了自定义请求,运行成功后会调用回收回调函数
定义开始请求(自身):
返回[请求( https://www。胡志。 meta={cookiejar : 1},callback=self.post_login)]
def post_login(自身,响应):
打印"准备登录"
#下面这句话用于抓取请求网页后返回网页中的_xsrf字段的文字,用于成功提交表单
xsrf=响应。XPath(//input[@ name= _ xsrf ]/@ value ).提取()[0]
打印跨站请求伪造
#FormRequeset.from_response是Scrapy提供的一个函数,用于邮政表单
#登陆成功后,会调用登录后回调函数
返回[表单请求。from _ response(response,# http://www。胡志。 com/登录,
meta={ cookiejar :响应。meta[ cookiejar ]},
headers=self.headers按井号键注意此处的头球
表单数据={
_xsrf: xsrf,
邮箱:“123456@qq.com”,
密码: 123456
},
callback=self.after_login,
dont_filter=True
)]
def after_login(self,response):
对于self.start_urls中的网址:
让出自我。制作请求来源URL(URL)
def parse_page(self,response):
问题=选择器(响应)
item=ZhihuItem()
item[url]=response.url
项目[名称]=问题。XPath(//span[@]/text()).提取()
打印项目[名称]
item[ title ]=问题。XPath(//H2[@]/text()).提取()
项目[描述]=问题。XPath(//div[@]/text()).提取()
item[答案]=问题。XPath(//div[@]/text()).提取()
返回项目项目类设置
从scrapy .项目导入项目,字段
类别ZhihuItem(项目):
#在此定义项目的字段,如下所示:
# name=scrapy .字段()
url=Field() #保存抓取问题的全球资源定位器(统一资源定位器)
title=Field() #抓取问题的标题
描述=Field() #抓取问题的描述
答案=Field() #抓取问题的答案
name=Field() #个人用户的名称setting.py设置抓取间隔
BOT_NAME=胡志
蜘蛛模块=[胡志。蜘蛛的]
胡志新闻。蜘蛛的
下载_延迟=0.25 #设置下载间隔为250毫秒
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。