14.requests

requests

python中原生的一款基于网络请求的模块,功能强大,代码简便,效率极高

作用:模拟浏览器发送请求,并且接收响应数据

注意:requests是第三方模块,使用时需要下载

pip install requests
# 若出现下载超时,换源即可

# 示例
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/

# 阿里云 http://mirrors.aliyun.com/pypi/simple/
# 豆瓣http://pypi.douban.com/simple/
# 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
# 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
# 华中科技大学http://pypi.hustunique.com/

发送请求

使用 Requests 发送网络请求非常简单。导包,之后添加方法进行。

import requests

resp = requests.get("url")
resp = requests.post("url")
request(url,params=None, headers=None, cookies=None,timeout=None,
            allow_redirects=True, proxies=None,verify=None, data=None):

参数 说明
params 字典或字节序列,作为参数增加到url中
headers 字典,HTTP定制头
cookies 字典或CookieJar, request中的cookie
timeout 设定超时时间,秒为单位
allow_redirects 重定向开关,默认为True
proxies 字典类型,设定访问代理服务器,可以增加登录认证
data 字典,字节序列或文件对象,作为request的内容

url-请求地址

通过向某一个地址发送请求,并获取到数据

# https://www.baidu.com/
import requests
url = "https://www.baidu.com/s?"

resp = requests.get(url)
print(resp)

params-请求参数

可将get请求的参数以字典的形式存放在params里面,发送请求时携带即可

# https://www.baidu.com/s?wd=美女
import requests
url = "https://www.baidu.com/s?"
params = {
    "wd":"美女"
}
resp = requests.get(url,params=params)
print(resp.url)

headers-请求头

如果想自定义请求的Headers,同样的将字典数据传递给headers参数。

作用:伪装

import requests
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}

url = "https://www.baidu.com?"
resp = requests.get(url,headers=headers)
resp.encoding="utf-8"
print(resp.text)

timeout-访问超时

设置访问超时,一旦超过设置时间,则会抛出异常

import requests
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}

url = "https://www.baidu.com?"
resp = requests.get(url,headers=headers,timeout=0.01)
resp.encoding="utf-8"
print(resp.text)

proxies-设置代理

当我们请求的ip有风险时,可以使用代理,同样构造代理字典,传递给proxies参数。

import requests
proxy = {"http":"127.0.0.1:80"}
resp = requests.get("http://httpbin.org/ip",proxies=proxy)
print(resp.text)

allow_redirects-重定向

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

import requests
url = "http://github.com"
resp = requests.get(url,allow_redirects=False)
print(resp.url)

verify-证书忽略

有时候再打开一个网站的时候,会出现安全证书验证,会导致爬虫获取不到数据,
image

所以我们就需要关闭证书验证。在请求的时候把verify参数设置为False就可以关闭证书验证了。

url = "http://github.com"
resp = requests.get(url,verify=False)
resp.encoding="utf-8"
print(resp)

但是关闭证书验证后,控制台会输出一个警告信息

image

虽然这个警告并不影响数据的抓取,但是对于强迫症患者来说,看着也是很烦人,想去掉这些警告。

可以使用以下方法,去掉所有警告

import warnings
warnings.filterwarnings('ignore')

response对象

属性

print(resp.text)#直接转换成字符串 非字节码
print(resp.content)#媒体数据 使用此参数
print(resp.status_code)#状态码
print(resp.json()["headers"]["User-Agent"])#自动转换成 字典格式
print(resp.headers)#响应头
print(resp.cookies)#响应cookie
print(resp.url)#响应的url
print(resp.request.url)#请求的url
print(resp.request.headers)#请求头
posted @   做笔记的一天  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示