爬虫——requests详细介绍,案例演示

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就可以了


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猩猩文学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值