欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫学习笔记(三)—— requests库

发布时间:2025/3/21 编程问答 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 爬虫学习笔记(三)—— requests库 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 。requests目前基本上完全满足web请求的所有需求,requests库常用的方法有:get、post、put、delete、head、options

一、安装

通过pip安装(注意这里的requests记得加s)

pip install requests

二、发送请求

使用 Requests 发送网络请求非常简单。导包,之后添加方法进行发起请求的方法变得简单,我们只需要着重关注一下发起请求的参数 ,10个重要的参数。

def request(url,params=None, headers=None, cookies=None,timeout=None,allow_redirects=True, proxies=None,verify=None, data=None,json=None):pass

params:字典或者字节序列,作为参数增加到url中

headers:添加请求头,在进行爬虫时添加headers很有必要,如果不添加,很可能把你禁掉

cookies: 字典或CookieJar对象

timeout:设置的超时时间,秒为单位

proxies:字典类型,设定访问代理服务器,可以增加登录认证
(注意:设置的代理ip必须是能用的,有需要的建议网上购买)

import requests test_url="http://httpbin.org/get"#测试url params={"name1":"spider","name2":"爬虫"}#请求参数 #请求头 headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"} cookies={"sessionid":"hashcode","userid":"987654321",} proxies={"http":"218.104.130.52:8888"}#示例代理ip res=requests.get(test_url,params=params,headers=headers,cookies=cookies,timeout=10,proxies=proxies) print(res.text)结果: {"args": {"name1": "spider", "name2": "\u722c\u866b"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Cookie": "sessionid=hashcode; userid=987654321", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-60ea9b49-36fe6883718b9967412bd9cc"}, "origin": "218.104.130.52", "url": "http://httpbin.org/get?name1=spider&name2=\u722c\u866b" }

allow_redirects: 值为True/False,默认为True, 重定向开关
很多网站是http开头,为了不影响老客户,原网站不懂,当访问http的原网址时,重定向到新的https网址,在requests中 allow_redirects默认是True,如果是False则不允许重定向,也就无法重定向新网址获取数据。

import requests url="http://github.com" res_gh=requests.get(url,allow_redirects=False) print(res_gh.text) print(res_gh.status_code)结果: 空 301

verify:值为True/False,默认为True, 忽略证书验证
(我们访问的网址出现不安全时,这时就会出现关于SSL的报错,verify设置false就可以爬取了)

import requests requests.urllib3.disable_warnings()#忽略warnning url="https://inv-veri.chinatax.gov.cn/index.html" res_ca=requests.get(url,verify=False) res_ca.encoding="utf-8" print(res_ca.text)

Json:JSON格式的数据,作为requests的内容
POST请求发送Json数据:

import requests json={"json_style":"json-data"}#json test_url="http://httpbin.org/post"#测试url res=requests.post(test_url,json=json) res.encoding="utf-8"#指定 字符串输出编码格式 print(res.text)#直接转换成字符串 非字节码结果: {"args": {}, "data": "{\"json_style\": \"json-data\"}", "files": {}, "form": {}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "27", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "python-requests/2.25.1", "X-Amzn-Trace-Id": "Root=1-60ea9d83-0a3d189a0f8e108e40e1caad"}, "json": {"json_style": "json-data"}, "origin": "218.104.130.52", "url": "http://httpbin.org/post" }

data: 是第二个控制参数,向服务器提交数据
POST请求发送Form表单数据:

import requests data={"data1":"spider","data2":"123456"}#form 表单数据 有data json为null test_url="http://httpbin.org/post"#测试url res=requests.post(test_url,data=data) print(res.text)结果: {"args": {}, "data": "", "files": {}, "form": {"data1": "spider", "data2": "123456"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "25", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.25.1", "X-Amzn-Trace-Id": "Root=1-60ea9ddc-66f1567b16aa914a69764c3d"}, "json": null, "origin": "218.104.130.52", "url": "http://httpbin.org/post" }

注意:json 和 data 不可以同时添加,同时添加会造成json中没有数据


三、response对象

常用属性:

import requests test_url="http://httpbin.org/get"#测试url res=requests.get(url=test_url) print(res.text)#直接转换成字符串 非字节码 print(res.content)#图片数据 使用此参数 print(res.status_code)#状态码 print(res.json()["headers"]["User-Agent"])#自动转换成 字典格式 print(res.headers)#响应头 print(res.cookies)#响应cookie print(res.url)#请求的url print(res.request.url)#请求的url print(res.request.headers)#请求头

四、session方法

session方法是requests库发起请求的一种方法,这种方法会自动保存访问页面得到的cookie值,从而再次访问的时候会自动携带cookie,使得操作cookie方便,不需要我们自己添加cookie了。常用于登录;

requests与session发起请求对比

import requestsindex_url="http://www.baidu.com" headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"} res=requests.get(index_url,headers=headers) print("请求头信息********requests*******") print(res.request.headers)结果: 请求头信息********requests******* {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'BAIDUID=835160CB3530E3CFD5EB427D5E848CD0:FG=1; BIDUPSID=835160CB3530E3CF266788D53A9B383D; PSTM=1626055033; BD_LAST_QID=17570873450330636283'} #session的使用 index_url="http://www.baidu.com" headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"} session=requests.session()#创建session对象 session.headers=headers#添加请求头 res_ss=session.get(index_url) print("请求头信息********session*******") print(res_ss.request.headers)结果: 请求头信息********session******* {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'Cookie': 'BAIDUID=11D1727367960A85924002C72FF29721:FG=1; BIDUPSID=11D1727367960A851936876B050ED76B; PSTM=1626055034; BD_LAST_QID=14539128174352067748'}

总结

以上是生活随笔为你收集整理的爬虫学习笔记(三)—— requests库的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。