requests是一个功能强大,使用方便的网络请求库.
本文主要介绍requests库入门水平的常用方法
最基本的get请求发送方式如下:
import requests
r = requests.get(url)
返回的r为一个 Response对象
get方法的常用可选参数有
params
为 URL 的查询字符串传递某种数据
例:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print(r.url)
#http://httpbin.org/get?key2=value2&key1=value1
如果不定制请求头,一些网站会拒绝爬虫访问
例:
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
r = requests.get(url, timeout=10)
如果超时,会抛出异常
text
url对应的页面内容
status_code
http请求的状态码,200表示链接成功
其他状态码表示的含义请自行百度
raise_for_status()方法可以检测返回的状态码是否为200
如果不是200,则抛出异常
r.raise_for_status()
若状态码为404:
Traceback (most recent call last):
File "requests/models.py", line 832, in raise_for_status
raise http_error
requests.exceptions.HTTPError: 404 Client Error
若状态码为200
r.raise_for_status()
None
encoding
从header中得到的编码方式
若header中没有charset,默认编码为 ISO-8859-1
apparent_encoding
从内容分析得到的编码方式
content
http响应内容的二进制形式
Requests 会自动为你解码 gzip 和 deflate 传输编码的响应数据。
例如,以请求返回的二进制数据创建一张图片:
from PIL import Image
from io import BytesIO
i = Image.open(BytesIO(r.content))
r.headers
{
'content-encoding': 'gzip',
'transfer-encoding': 'chunked',
'connection': 'close',
'server': 'nginx/1.0.4',
'x-runtime': '148ms',
'etag': '"e1ca502697e5c9317743dc078f67693f"',
'content-type': 'application/json'
}
import requests
url = r''#目标地址
try:
r = requests.get(url, headers={'User-Agent':'Mozilla/5.0'}, timeout=20)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text)
except:
print('产生异常')
这里也可以将try后面的内容封装作为函数调用
Python网络爬虫与信息提取视频教程:
https://www.icourse163.org/course/BIT-1001870001 #说实话看这个视频应该快进起码1.5倍
Requests 2.18.1 官方文档:
http://cn.python-requests.org/zh_CN/latest/ #挺好的,擅长啃文档的直接看这个就行了