这期内容当中小编将会给大家带来有关怎么在python中使用scrapy发送一个帖子请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>使用请求发送帖子请求强>
先来看看使用请求来发送帖子请求是多少好用,发送请求
请求简便的API意味着所有HTTP请求类型都是显而易见的,例如,你可以这样发送一个HTTP post请求:
在祝辞祝辞r =, requests.post (& # 39; http://httpbin.org/post& # 39;,, data =,{& # 39;关键# 39;:& # 39;价值# 39;})
使用数据可以传递字典作为参数,同时也可以传递元祖
在祝辞祝辞payload =, ((& # 39; key1& # 39;,, & # 39; value1 # 39;),, (& # 39; key1& # 39;,, & # 39; value2 # 39;)) 在祝辞祝辞r =, requests.post (& # 39; http://httpbin.org/post& # 39;,, data=https://www.yisu.com/zixun/payload)>>打印(r.text) { … “形式”:{ “key1”:( “value1”, “value2” ] }, … }
传递json是这样
在祝辞祝辞import json 祝辞祝辞祝辞url =, & # 39; https://api.github.com/some/endpoint& # 39; 祝辞祝辞祝辞payload =,{& # 39;一些# 39;:,& # 39;数据# 39;} 祝辞祝辞祝辞r =, requests.post (url, data=https://www.yisu.com/zixun/json.dumps(载荷))
2.4.2版的新加功能:
在祝辞祝辞url =, & # 39; https://api.github.com/some/endpoint& # 39; 祝辞祝辞祝辞payload =,{& # 39;一些# 39;:,& # 39;数据# 39;} 祝辞祝辞祝辞r =, requests.post (url, json=有效载荷)
也就是说,你不需要对参数做什么变化,只需要关注使用数据=https://www.yisu.com/zixun/还是json=,其余的请求都已经帮你做好了。
<强>使用scrapy发送帖子请求强>
通过源码可知scrapy默认发送的会请求,当我们需要发送携带参数的请求或登录时,是需要,请求的,以下面为例
得到scrapy.spider import CrawlSpider 得到scrapy.selector import 选择器 import scrapy import json class LaGou (CrawlSpider): 时间=name 才能;& # 39;myspider& # 39; def 才能start_requests(自我): ,,,油品收率scrapy.FormRequest ( ,,,,,url=& # 39; https://www。* * * * * *.com/jobs/positionAjax.json?city=%E5%B9%BF%E5%B7%9E& needAddtionalResult=假# 39; ,,,,,formdata=https://www.yisu.com/zixun/{ “第一次”:“真实”,#这里不能给bool类型的事实,请求模块中可以 “pn”:“1”,这号里不能给int类型的1,请求模块中可以 “kd”:“python” },这里的formdata相当于requ模块中的数据,键和值只能是键值对形式 回调=self.parse ) def解析(自我,反应): 数据=json.loads (response.body.decode())(“内容”)(“positionResult”)(“结果”) 数据资料: 打印(数据[' companyFullName '] + str(数据[' positionId ']))
官方推荐的使用FormRequest通过HTTP POST发送数据
return [FormRequest (url=? http://www.example.com/post/action",, ,,,,,,,,,formdata=https://www.yisu.com/zixun/{“名称”:“John Doe”,“年龄”:“27”}, 回调=self.after_post)
这里使用的是FormRequest,并使用formdata传递参数,看到这里也是一个字典。
但是,超级坑的一点来了,今天折腾了一下午,使用这种方法发送请求,怎么发都会出问题,返回的数据一直都不是我想要的
return scrapy.FormRequest (url, formdata=https://www.yisu.com/zixun/(载荷))
在网上找了很久,最终找到一种方法,使用scrapy.Request发送请求,就可以正常的获取数据。
代码如下:
scrapy返回。请求(url,身体=json.dumps(载荷),方法=& # 39;文章# 39;,标题={& # 39;内容类型# 39;:& # 39;application/json # 39;},)
参考:发送Post请求Scrapy
my_data =, {& # 39; field1 # 39;:, & # 39; value1 # 39;,, & # 39; field2 # 39;:, & # 39; value2 # 39;} 时间=request scrapy.Request (url,大敌;方法=& # 39;文章# 39;,, ,,,,,,,,,,,,身体=json.dumps (my_data), ,,,,,,,,,,,,头={& # 39;内容类型# 39;:& # 39;application/json # 39;},)
<强> FormRequest与请求区别强>
在文档中,几乎看不到差别,
FormRequest类添加一个新的构造函数的参数。剩余的参数是一样的为请求类和记录在这里。
参数:formdata (dict或元组iterable) -是一个字典(或iterable(键,值)元组)包含HTML表单数据将url编码和分配给请求的主体。怎么在python中使用scrapy发送一个帖子请求