使用requests发送post请求
先来看看使用requests来发送post请求是多少好用,发送请求
Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。例如,你可以这样发送一个 HTTP POST 请求:
>>>r = requests.post('http://httpbin.org/post', data = {'key':'value'})
使用data可以传递字典作为参数,同时也可以传递元祖
>>>payload = (('key1', 'value1'), ('key1', 'value2'))
>>>r = requests.post('http://httpbin.org/post', data=payload)
>>>print(r.text)
{
...
"form": {
"key1": [
"value1",
"value2"
]
},
...
}
传递json是这样
>>>import json
>>>url = 'https://api.github.com/some/endpoint'
>>>payload = {'some': 'data'}
>>>r = requests.post(url, data=json.dumps(payload))
2.4.2 版的新加功能:
>>>url = 'https://api.github.com/some/endpoint'
>>>payload = {'some': 'data'}
>>>r = requests.post(url, json=payload)
也就是说,你不需要对参数做什么变化,只需要关注使用data=还是json=,其余的requests都已经帮你做好了。
使用scrapy发送post请求
通过源码可知scrapy默认发送的get请求,当我们需要发送携带参数的请求或登录时,是需要post、请求的,以下面为例
from scrapy.spider import CrawlSpider
from scrapy.selector import Selector
import scrapy
import json
class LaGou(CrawlSpider):
name = 'myspider'
def start_requests(self):
yield scrapy.FormRequest(
url='https://www.******.com/j