900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Requests如何在Python爬虫中实现post请求 ?

Requests如何在Python爬虫中实现post请求 ?

时间:2018-10-19 09:15:49

相关推荐

Requests如何在Python爬虫中实现post请求 ?

urllib库作为python基础的工具,想必大家已经学的差不多了。作为一个有理想,有抱负的小白当然要向python大神进阶。小编查询了一些资料,发现Requests库也是不错的选择。post请求和requests一起处理,有的小伙伴就觉得问题很棘手。在我们掌握了一些基础的爬取知识后,相信大家学习新的库也不会那么困难。接下来就让我们一起学习下吧。

对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数。

import requestspayload = {'key1': 'value1', 'key2': 'value2'}r = requests.post("/post", data=payload)print r.text

运行结果

{"args": {},"data": "","files": {},"form": {"key1": "value1","key2": "value2"},"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Content-Length": "23","Content-Type": "application/x-www-form-urlencoded","Host": "","User-Agent": "python-requests/2.9.1"},"json": null,"url": "/post"}

可以看到参数传成功了,然后服务器返回了我们传的数据。 有时候我们需要传送的信息不是表单形式的,需要我们传 JSON 格式的数据过去,所以我们可以用 json.dumps () 方法把表单数据序列化。

import jsonimport requestsurl = '/post'payload = {'some': 'data'}r = requests.post(url, data=json.dumps(payload))print r.text

运行结果

{"args": {},"data": "{\"some\": \"data\"}","files": {},"form": {},"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Content-Length": "16","Host": "","User-Agent": "python-requests/2.9.1"},"json": {"some": "data"}, "url": "/post"}

通过上述方法,我们可以 POST JSON 格式的数据 如果想要上传文件,那么直接用 file 参数即可 新建一个 a.txt 的文件,内容写上 Hello World!

import requestsurl = '/post'files = {'file': open('test.txt', 'rb')}r = requests.post(url, files=files)print r.text

可以看到运行结果如下

{"args": {},"data": "","files": {"file": "Hello World!"},"form": {},"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Content-Length": "156","Content-Type": "multipart/form-data; boundary=7d8eb5ff99a04c11bb3e862ce78d7000","Host": "","User-Agent": "python-requests/2.9.1"},"json": null,"url": "/post"}

这样我们便成功完成了一个文件的上传。 requests 是支持流式上传的,这允许你发送大的数据流或文件而无需先把它们读入内存。要使用流式上传,仅需为你的请求体提供一个类文件对象即可

with open('massive-body') as f:requests.post('http://some.url/streamed', data=f)

这是一个非常实用方便的功能。

以上就是Python爬虫中Requests实现post请求 的方法。不成功的小伙伴可以多试试几遍代码,已经学过的可以找找手感,重新再来一遍,知识的累积总是一个漫长的过程。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。