爬虫 - Request库简介
Requests
安装
pip install requests
get请求
获取资源,通常用于读取
简单的get请求,如图所示
import requests
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}
res = requests.get('https://www.baidu.com', headers=header)
get请求得到Python对象,包含响应头,响应体等等(res为返回的response对象)
-
res.content:字节方式的响应体,需要进行解码
![]()
-
res.text:字符串方式的响应体,会自动根据响应头部的字符编码进行解码
![]()
-
res.url:获取请求链接
![]()
-
res.encoding:获取编码格式
![]()
-
res.status_code:响应状态码
![]()
-
res.headers:响应头信息
![]()
-
res.history:追踪重定向
![]()
![]()
-
res.iter_content():图片,视频,大文件,一点一点循环取出来import requests urls ='https://imglf6.lf127.net/img/044f60c2398a4552/MStRdmdPRFIrRjFWRk95R041Y296QUpheTlRaG9BMkl1QWRYUVBPalZtYz0.jpg' header ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'} res = requests.get(url=urls,headers =header) print(res.iter_content()) ### 生成器<generator object iter_slices at 0x05252CB0> with open('cat.jpg','wb') as f: for i in res.iter_content(): f.write(i)![]()
-
res.cookies:获取请求后的cookies
![]()
-
res.cookies.get_dict():cookie,字典格式
![]()
-
res.cookies.items():cookie,列表格式
![]()
-
res.raise_for_status():请求失败(非200响应),抛出异常
![]()
-
get请求携带参数
-
直接携带参数
![]()
-
params设置请求参数
![]()
-
get请求携带cookies
-
在header中放
header = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36', 'cookie':'key=asdfasdfasdfsdfsaasdf;key2=asdfasdf;key3=asdfasdf' } res=requests.get('http://127.0.0.1:8000/index/',headers=header) -
cookies设置
header = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36', } # cookies是一个字典或者CookieJar对象 res=requests.get('http://127.0.0.1:8000/index/',headers=header,cookies={'key':'asdfasdf'}) -
自动携带cookie
session=requests.session() res=session.post('http://127.0.0.1:8000/index/') # 假设这个请求登录了 res1=session.get('http://127.0.0.1:8000/order/') # 现在不需要手动带cookie,session会帮咱处理 -
使用代理
代理池:列表放了一堆代理ip,每次随机取一个,再发请求就不会封ip了
高匿和透明代理:如果使用高匿代理,后端无论如何拿不到你的ip,使用透明,后端能够拿到你的ipurl = 'http://www.suqian360.com' header ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'} res = requests.get(url=url,headers=header,proxies={'http':'112.54.41.177:9091',}) print(res.status_code) ###可以在网站的访问日志中查看这个字段:X-Forwarded-For就能看到源ip![]()
-
设置超时时间
url = 'http://marry.pic.xishuw.net/' header ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'} res = requests.get(url=url,headers=header,timeout=1) print(res.text)![]()
post请求
提交数据,通常用与创建或更新资源
先学会谷歌工具查看
1. 先找到post请求


2. 在payload(载荷中找到自己请求的关键字)
payload通常以json格式发送,包含了请求参数和数据;在发送一个post请求时,payload可能包含表单数据,文件数据或者其他需要传递给服务器的数据

3. 然后在header(标头)中找到url
get请求可以直接使用浏览器中的url,但是post请求一定要用head中请求的url

代码运行如下:

response.json():可以直接反序列化并解码post的数据返回
如图所示

其他
随机生成ua头
安装:pip install fake_useragent
from fake_useragent import UserAgent
ua = UserAgent()
###随机生成
suiji = ua.random
###谷歌请求头
google = ua.chrome
###火狐请求头
firefox = ua.firefox
###safari请求头
safari = ua.safari
###ie请求头
ie = ua.edge
异常处理
from requests.exceptions import * #可以查看requests.exceptions获取异常类型
try:
r=requests.get('http://www.baidu.com',timeout=0.00001)
except Exception as e:
print(e)
编码问题
-
response对象获取乱码
res=requests.get('http://www.autohome.com/news') # 一旦打印出来出现乱码问题 # 方式一 res.encoding='gb2312' # 方式二 res.encoding=res.apparent_encoding -
post请求返回解码
from urllib.parse import unquote,urlencode print(unquote('\u86c7\u5c5e\uff0c\u87d2\u86c7\u5c5e'))![]()
-
url解码编码
![]()




















浙公网安备 33010602011771号