Python爬虫工具之Requests
2016-10-12 20:45
375 查看
本博客文章内容翻译自Requests的官方文档,英语好的可以自行查看官方文档,地址戳这
请求
首先导入 requests模块import requests
现在我们先请求得到一个网页
r = requests.get('https://api.github.com/events')
我们得到了一个名字为r的响应对象,我们可以从r中得到我们想要的信息。比如cookies,content,headers,等等。
HTTP的其他请求PUT,DELETE,HEAD,resquests也有对应的方法
r = requests.put('http://httpbin.org/put', data = {'key':'value'}) r = requests.delete('http://httpbin.org/delete') r = requests.head('http://httpbin.org/get') r = requests.options('http://httpbin.org/get')
在URLs中传递参数
如果想在请求的时候传入参数,可以用下面的代码payload = {'key1': 'value1', 'key2': 'value2'} r = requests.get('http://httpbin.org/get', params=payload)
在params中传入参数,参数的形式为键值对的形式
你可以看到在请求的时候URL是这样的
print( 4000 r.url) #打印r的url http://httpbin.org/get?key2=value2&key1=value1 #结果
可以看到请求的URL中成功的接收到了我们传入的参数
响应
我们可以读到服务器发送给我们的响应import requests r = requests.get('http://www.baidu.com') r.text
运行结果是这样的
<html><head><meta charset="utf-8"></head><body><script type="text/javascript" src="http://d.baldui.com:8477/pc.php?http://www.baidu.com/"></script></body></html>
JOSN响应
import requests r = requests.get('https://api.github.com/events') print r.json()
[{u’repository’: {u’open_issues’: 0, u’url’: ‘https://github.com/…
原始套接字响应
在一些特殊的场合,你可能想要从服务器中得到原始的套接字,你可以使用r.raw来获得,如果你想要这样做的话,首先要确保在你的请求中设置了stream=Truer = requests.get('https://api.github.com/events', stream=True) r.raw <requests.packages.urllib3.response.HTTPResponse object at 0x101194810> r.raw.read(10) '\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'
订制Headers
如果你想要在HTTP请求中加入请求头,一般的可以通过向headers中传入字典的形式,例如url = 'https://api.github.com/some/endpoint' headers = {'user-agent': 'my-app/0.0.1'} r = requests.get(url, headers=headers)
这样我们就在请求头中传入了user-agent。
更复杂的POST请求
如果我们想传入一些特殊的的数据,比如HTML表单,那么可以用data参数来搞定,payload = {'key1': 'value1', 'key2': 'value2'} r = requests.post("http://httpbin.org/post", data=payload) print(r.text) # 打印结果如下 { ... "form": { "key2": "value2", "key1": "value1" }, ... }
或者上传的不是HTML表单,可以用JSON格式的数据
import json url = 'https://api.github.com/some/endpoint' payload = {'some': 'data'} # 用json.dumps()方法将数据序列化 r = requests.post(url, data=json.dumps(payload))
上传文件
新建一个report.xls的文件,在files中即可完成上传url = 'http://httpbin.org/post' files = {'file': open('report.xls', 'rb')} r = requests.post(url, files=files) r.text { ... "files": { "file": "<censored...binary...data>" }, ... }
Timeouts
可以用timeouts来设置超时时间requests.get('http://github.com', timeout=0.001)
timeout与响应的下载无关,如果超时时间内没有相应,就会抛出异常
相关文章推荐
- Python 爬虫—— requests BeautifulSoup
- win7(win32)安装python 爬虫工具scrapy记录
- Python Requests爬虫——获取一个收藏夹下所有答案的图片
- python+Selenium2+chrome构建动态网页爬虫工具
- 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第二篇)
- Python的网页爬虫&文本处理&科学计&机器学习&数据挖掘工具集
- python爬虫工具及最佳实践
- Python的网页爬虫&文本处理&科学计&机器学习&数据挖掘工具集
- mac 下 python 爬虫工具 scrapy 的安装
- 关于Python 2.7.8 下安装Scrapy爬虫工具的步骤
- python爬虫 - python requests网络请求简洁之道
- python+Selenium2+chrome构建动态网页爬虫工具
- Python安装Scrapy爬虫工具
- Python爬虫(使用requests)
- python Requests 知乎问题图片爬虫
- python脚本工具-1 制作爬虫下载网页图片