requests模块
文章目录
requests介绍
是第三方 需要安装的
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
但是需要注意的是 在pycharm里面 最好不要用虚拟环境(如果解释器的路径中包含单词venv 就证明可能用的是虚拟环境)
File–>settings–>Project:xxx–>project Interpreter
可以使用requests像携带了中文字样的url发送请求 但是urllib不行
三种安装方式:
1、通过cmd进行安装
2、通过pycharm中的终端输入pip install XXX代码安装
3、通过pycharm中设置里找到python解释器里面内部搜索安装包进行安装
提示:以下是本篇文章正文内容,下面案例可供参考
一、requests模块get发送请求——王者荣耀贴吧案例
get 请求方式
第一种请求方式
import requests
# https://tieba.baidu.com/f?ie=utf-8&kw=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&fr=search
url = "https://tieba.baidu.com/f?ie=utf-8&kw=王者荣耀&fr=search"
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/97.0.4692.99 Safari/537.36 "
}
# 第一种请求方式
response_obj = requests.get(url,headers=header)
print(response_obj.status_code)#获取状态码
第二种请求方式
import requests
# https://tieba.baidu.com/f?ie=utf-8&kw=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&fr=search
url = "https://tieba.baidu.com/f?ie=utf-8&kw=王者荣耀&fr=search"
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/97.0.4692.99 Safari/537.36 "
}
# 第二种请求方式(拼接url)
base_url = "https://tieba.baidu.com/f?"
params = {
"ie": "utf-8",
"kw": "王者荣耀",
"fr": "search",
}
response_obj = requests.get(base_url, params=params, headers=header)
"""
base_url 基准url 不包含参数
params 以键值对的形式来添加参数 不需要另外进行url拼接
"""
# print(response_obj.text)
# text获取requests发送请求之后得到的响应对象里面的源码
# print(type(response_obj))
补充知识——乱码解决
案例网站:
https://qq.yh31.com/zjbq/2920180.html
出现乱码问题
乱码——解决代码
第一种方法
import requests
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/97.0.4692.99 Safari/537.36 "
}
# url为目标url
url = "https://qq.yh31.com/zjbq/2920180.html"
response_obj = requests.get(url, headers=header)
# print(response_obj.text)
# 在urllib里面的响应对象 urllib_response urllib_response.read()<class 'bytes'>需要decode('utf-8')进行转化str
# 乱码解决
#print(response_obj.content)
print(type(response_obj.content.decode("utf-8")),response_obj.content.decode("utf-8"))
response_obj.content 拿到的是bytes字节流 二进制数据 一般用来获取视频音频图片之类的
response_obj.content是request模块对response_obj.content解码之后得到的字符串(会猜一种解码方式)
第二种方法
import requests
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/97.0.4692.99 Safari/537.36 "
}
# url为目标url
url = "https://qq.yh31.com/zjbq/2920180.html"
response_obj = requests.get(url, headers=header)
# 解码方式第二种
response_obj.encoding = 'utf-8'
print(type(response_obj.text), response_obj.text)
第一种方式 直接对响应内容(源代码)进行编码
第二种方式 先对响应对象进行编码 在提取响应对象中的源代码
二、requests模块post发送请求——有道翻译案例
代码演示
代码如下(示例):
import requests
# 请求头,用来伪装
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/97.0.4692.99 Safari/537.36 "
}
# 目标url
url = "https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
# 发送post请求时,需要的参数data
word = input("请输入要翻译的内容:")
dic = {
"i": word,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": "16504345411038",
"sign": "1fd879b77c3d9ad88360b4b161a3bb2e",
"lts": "1650434541103",
"bv": "ac3968199d18b7367b2479d1f4938ac2",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME",
}
response_obj = requests.post(url, headers=header, data=dic)
print(response_obj.text)
三、requests设置IP代理
ip介绍
防止被封ip
原理展示图:
作用:
1、能够隐匿真实ip
2、反爬策略
代理ip的隐匿度:
1、透明 服务器知道你使用了代理ip 也知道你真实ip
2、匿名 服务器知道你使用了代理ip 但不知道你真实ip
3、高匿 服务器不知道你使用了代理ip 也不知道你真实ip
cmd–>ipconfig
可以了解到ipv4对应自己真实ip
伪装ip
https://www.ipip.net/(通过这里查询的ip是需要伪装的ip)
测试代理IP是否成功
http://httpbin.org/ip (测试网站)
import requests
# http://httpbin.org/ip 用来测试代理ip设置成功没
url = "http://httpbin.org/ip"
res_obj = requests.get(url)
print(res_obj.text)
免费代理ip——测试代理
import requests
# http://httpbin.org/ip 用来测试代理ip设置成功没
url = "http://httpbin.org/ip"
# proxy 以键值对的形式存放代理ip
proxy = {
"http": "120.220.220.95:8085"
}
res_obj = requests.get(url, proxies=proxy)
print(res_obj.text)
四、ssl请求
不能直接用requests模块向一个不被ssl信任的网站发送请求
https = http + ssl
ssl是数字证书的一种只不过是配置在服务其上面的,称之为是ssl服务器证书
ssl证书遵循ssl协议,由受信任的数据证书颁发机构 在验证身份之后颁发的证书
有服务器身份验证和数据传输加密的功能
测试网站
https://inv-veri.chinatax.gov.cn/
人生建议不要爬取这个网站,这里仅作为案例参考!!!
解决问题:
import requests
# 测试网站 https://inv-veri.chinatax.gov.cn/
url = 'https://inv-veri.chinatax.gov.cn/'
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/97.0.4692.99 Safari/537.36 "
}
res = requests.get(url,headers=header,verify=False)
print(res.text)
res = requests.get(url,headers=header,verify=False)#加上verify=False就可以了