首页 > 其他分享 >14.requests

14.requests

时间:2022-11-09 17:23:01浏览次数:44  
标签:14 url resp headers print requests com

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)#请求头

标签:14,url,resp,headers,print,requests,com
From: https://www.cnblogs.com/blog4lyh/p/16874495.html

相关文章

  • 设计模式利剑14-迭代器模式
    定     义:它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对对象的内部细节,,Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以......
  • 洛谷P1434滑雪分析
    [SHOI2002]滑雪题目描述Michael喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来......
  • 【BUG记录】 SSL: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too
    在为nginx添加SSL认证的时候,出现了如下错误nginx:[emerg]SSL_CTX_use_certificate("/ssl/server.crt")failed(SSL:error:140AB18F:SSLroutines:SSL_CTX_use_certifica......
  • day14 --> (HTTP协议响应消息、Response对象、ServletContext对象)
    HTTP协议:1、请求消息:客户端发送给服务器端的数据数据格式:1.请求行2.请求头3.请求空行4.请求体2、响应消息:服务器端发送给客户端的数据数据格式:1.响应行1、组成:协......
  • 142. 环形链表 II
    142.环形链表II给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达......
  • 卷妹的成长日记之javaweb day14
    卷妹的成长日记之javawebday14......
  • 牛客java选择题每日打卡Day14
    牛客java选择题每日打卡Day14......
  • CF1418D Trash Problem
    题目传送门思路这题其实非常的简单,完全到不了\(\mathcal*2100\)。发现这个题目描述有点诈骗,但是翻译的挺不错,实质上问题就是给你\(n\)个点,让你动态维护相邻两个点的......
  • [ARC140D] One to One
    首先有一个性质,每个点只有一条出边的图,每个联通块只能是基环树。那么有\(-1\)的连通块就一定是树。本题要求的是每种连边方案的联通块数量之和,把贡献拆开来算就可以转化......
  • day14
    [0001.两数之和]不会用map。。。后面再看先放着C++代码:classSolution{public:vector<int>twoSum(vector<int>&nums,inttarget){std::unord......