Python爬虫工具之Requests

本博客文章内容翻译自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(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=True

r = 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与响应的下载无关,如果超时时间内没有相应,就会抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值