栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫-Requests模块

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫-Requests模块

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言

    目录

    文章目录

    前言

    一、requests是什么?

    二、使用步骤

    1.在python环境中安装

    2.引入库

    2.读取数据

    response.text和response.content的区别

    3.response响应对象的常用属性

    4.定制头和cookie信息

    5.代理

    正向代理和反向代理的区别

    代理ip的分类

    proxies代理参数的使用

    使用verify参数忽略CA证书

    requests发送post请求 

    requests.session进行状态保持


前言

        ·发送http请求,获取响应数据时,需要用到requests模块,进行网络请求时,非常的人性化,被称为“人类”使用的http请求模块,使用requests可以轻轻松松完成浏览器可有的任何操作,从而将爬虫程序伪装成浏览器。

一、requests是什么?

Requests模块是第三方模块,用于网络访问,主要用来发送HTTP请求,requests模块比urllib2模块更简洁。

二、使用步骤

1.在python环境中安装

        Win+r,输入cmd,打开命令行窗口,输入以下语句进行requests模块的安装

pip install requests

2.引入库

代码如下(示例):

import requests #导入requests模块

2.读取数据

代码如下(示例):获取百度的网页源码

url = 'https://www.baidu.com' #百度的url

response = requests.get(url) #向目标url发送GET请求

print(response.text) #打印源码的str类型数据 -- 提取文本

print(response.encoding = 'utf-8') #手动设定解码方式,默认为utf-8

print(response.content) #打印源码的bytes类型数据 -- 提取图片文件等等

print(response.content.decode()) #打印源码的str类型数据 -- 提取文本

response.text和response.content的区别

        ·response.text

                ·数据类型 -- str

                ·解码类型 -- resquests模块自动根据HTTP头部对响应的编码做出有根据的推测,推测文本的编码方式

        ·response.content

                ·数据类型 -- bytes

                ·解码类型 -- 没指定

        ·网络传输的字符串都是bytes类型的

3.response响应对象的常用属性
print(response.url) #打印响应的url,响应的url可能与请求的url不一致

print(response.status_code) #打印响应状态码

print(response.request.headers) #打印响应的请求头

print(response.headers) #打印响应头

print(response.request._cookies) #打印响应的请求cookie,返回cookieJar类型

print(response.cookies) #打印响应的cookie

print(response.json()) #自动将json字符串类型的响应内容转换为python对象

4.定制头和cookie信息
url = 'https://www.baidu.com' #目标url

#请求头以字典形式保存
headers = {
    'user-agent': 'browser/0.1'
}

#cookies以字典形式保存
cookies= {
    'key': 'value'
}

response = requests.get(url=url, headers=headers, cookies=cookies, timeout=5)

timeout=5表示发送请求后,5秒钟内返回响应,否则返回异常

5.代理

        ·代理ip是指向一个代理服务器的ip地址

        ·代理服务器能够帮我们向目标服务器发送请求

正向代理和反向代理的区别

        ·为浏览器或客户端转发请求的,叫做正向代理,浏览器知道最终处理请求的服务器的真实ip地址,如VPN

        ·不为浏览器或客户端转发请求,而是为最终处理请求的服务器转发请求的,叫做反向代理,如nginx

代理ip的分类

        ·根据代理ip的匿名程度,代理ip可以分为以下三类

                ·透明代理 -- 虽然可以直接隐藏本机的ip地址,但是目标服务器还可以查到真实ip

                ·匿名代理 -- 目标服务器可以明确知道你使用了代理,但是无法查到真实ip

                ·高匿代理 -- 目标服务器无法知道你是否使用了代理。

                ·高匿代理是爬虫推荐使用的一种代理

        · 网站使用的协议不同,从代理ip请求服务使用的协议可分为

                ·http代理 -- 目标url为http协议

                ·https代理 -- 目标url为https协议,一般情况下也支持http代理

                ·socks隧道代理 -- 简单地传递数据包,不关心是哪种应用协议,比http,https代理耗时短,可以转发http和https的请求

proxies代理参数的使用
#包含代理ip的字典结构
proxies = {
    'https': 'https://122.51.231.113:8080'
}


response = requests.get(url, proxies=proxies)

神鸡IP地址官网,有免费的代理ipIP代理软件下载,多平台支持-神鸡软件IP代理多平台支持,提供windows软件IP代理下载接口,Android软件IP代理接口和iOS端接口,一站式动态IP,全方位服务.https://www.ruanjian.shenjidaili.com/download

使用verify参数忽略CA证书

使用浏览器浏览网页时,有时候可以看到下面的提示,出现的原因时该网站的CA证书没有经过受信任的根证书颁发机构的认证

        使用verify参数解决

url = 'https://hao360.cn/' #目标url

#vefiry=False表示忽略CA证书,默认值为True
response = requests.get(url, verify=False)

requests发送post请求 

 

#data字典中包含表单数据
data = {
    'key': 'value'
}

response = requests.post(url,data)

requests.session进行状态保持

        resquests模块中的session类能够自动处理发送请求获取响应过程中产生的cookie,进而达到状态保持的目的

requests.session的使用方法,session对象发送GET和POST请求的参数与requests模块发送请求的参数完全一致

session = requests.session() 
response = session.get(url, headers.) #发送GET请求
response = session.post(url, data) #发送POST请求

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号