python 爬虫请求模块requests详解


Posted in Python onDecember 04, 2020

requests

相比urllib,第三方库requests更加简单人性化,是爬虫工作中常用的库

requests安装

初级爬虫的开始主要是使用requests模块
安装requests模块:
Windows系统:
cmd中:

pip install requests

mac系统中:
终端中:

pip3 install requests

requests库的基本使用

import requests

url = 'https://www.csdn.net/'
reponse = requests.get(url)
#返回unicode格式的数据(str) 
print(reponse.text)

python 爬虫请求模块requests详解

响应对象response的⽅法

response.text 返回unicode格式的数据(str)
response.content 返回字节流数据(⼆进制)
response.content.decode(‘utf-8') ⼿动进⾏解码
response.url 返回url
response.encode() = ‘编码'

状态码

response.status_code: 检查响应的状态码

python 爬虫请求模块requests详解

例如:
200 : 请求成功
301 : 永久重定向
302 : 临时重定向
403 : 服务器拒绝请求
404 : 请求失败(服务器⽆法根据客户端的请求找到资源(⽹⻚))
500 : 服务器内部请求

# 导入requests
import requests
# 调用requests中的get()方法来向服务器发送请求,括号内的url参数就是我们
# 需要访问的网址,然后将获取到的响应通过变量response保存起来
url = 'https://www.csdn.net/' # csdn官网链接链接
response = requests.get(url)
print(response.status_code) # response.status_code: 检查响应的状态码

200

请求⽅式

requests的几种请求方式:

p = requests.get(url)
p = requests.post(url)
p = requests.put(url,data={'key':'value'})
p = requests.delete(url)
p = requests.head(url)
p = requests.options(url)

GET请求

HTTP默认的请求方法就是GET
* 没有请求体
* 数据必须在1K之内!
* GET请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:
1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
2. 点击页面上的超链接也一定是GET请求
3. 提交表单时,表单默认使用GET请求,但可以设置为POST

POST请求

(1). 数据不会出现在地址栏中
(2). 数据的大小没有上限
(3). 有请求体
(4). 请求体中如果存在中文,会使用URL编码!

requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据

请求头

当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当此请求的内容发送给服务器。
我们可以手动设定请求头的内容:

import requests

header = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}

url = 'https://www.csdn.net/'
reponse = requests.get(url,headers=header)
#打印文本形式
print(reponse.text)

requests设置代理

使⽤requests添加代理只需要在请求⽅法中(get/post)传递proxies参数就可以了

cookie

cookie :通过在客户端记录的信息确定⽤户身份

HTTP是⼀种⽆连接协议,客户端和服务器交互仅仅限于 请求/响应过程,结束后 断开,下⼀次请求时,服务器会认为是⼀个新的客户端,为了维护他们之间的连接, 让服务器知道这是前⼀个⽤户发起的请求,必须在⼀个地⽅保存客户端信息。

requests操作Cookies很简单,只需要指定cookies参数即可

import requests
#这段cookies是从CSDN官网控制台中复制的
header = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
      'cookie': 'uuid_tt_dd=10_30835064740-1583844255125-466273; dc_session_id=10_1583844255125.696601; __gads=ID=23811027bd34da29:T=1583844256:S=ALNI_MY6f7VlmNJKxrkHd2WKUIBQ34Bbnw; UserName=xdc1812547560; UserInfo=708aa833b2064ba9bb8ab0be63866b58; UserToken=708aa833b2064ba9bb8ab0be63866b58; UserNick=xdc1812547560; AU=F85; UN=xdc1812547560; BT=1590317415705; p_uid=U000000; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_30835064740-1583844255125-466273!5744*1*xdc1812547560; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22xdc1812547560%22%2C%22scope%22%3A1%7D%7D; log_Id_click=1; Hm_lvt_feacd7cde2017fd3b499802fc6a6dbb4=1595575203; Hm_up_feacd7cde2017fd3b499802fc6a6dbb4=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22xdc1812547560%22%2C%22scope%22%3A1%7D%7D; Hm_ct_feacd7cde2017fd3b499802fc6a6dbb4=5744*1*xdc1812547560!6525*1*10_30835064740-1583844255125-466273; Hm_up_facf15707d34a73694bf5c0d571a4a72=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22xdc1812547560%22%2C%22scope%22%3A1%7D%7D; Hm_ct_facf15707d34a73694bf5c0d571a4a72=5744*1*xdc1812547560!6525*1*10_30835064740-1583844255125-466273; announcement=%257B%2522isLogin%2522%253Atrue%252C%2522announcementUrl%2522%253A%2522https%253A%252F%252Flive.csdn.net%252Froom%252Fyzkskaka%252Fats4dBdZ%253Futm_source%253D908346557%2522%252C%2522announcementCount%2522%253A0%257D; Hm_lvt_facf15707d34a73694bf5c0d571a4a72=1596946584,1597134917,1597155835,1597206739; searchHistoryArray=%255B%2522%25E8%258F%259C%25E9%25B8%259FIT%25E5%25A5%25B3%2522%252C%2522%25E5%25AE%25A2%25E6%259C%258D%2522%255D; log_Id_pv=7; log_Id_view=8; dc_sid=c0efd34d6da090a1fccd033091e0dc53; TY_SESSION_ID=7d77f76f-a4b1-43ef-9bb5-0aebee8ee475; c_ref=https%3A//www.baidu.com/link; c_first_ref=www.baidu.com; c_first_page=https%3A//www.csdn.net/; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1597245305,1597254589,1597290418,1597378513; c_segment=1; dc_tos=qf1jz2; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1597387359'}

url = 'https://www.csdn.net/'
reponse = requests.get(url,headers=header)
#打印文本形式
print(reponse.text)

session

session :通过在服务端记录的信息确定⽤户身份
这⾥这个session就是⼀个指 的是会话
会话对象是一种高级的用法,可以跨请求保持某些参数,比如在同一个Session实例之间保存Cookie,像浏览器一样,我们并不需要每次请求Cookie,Session会自动在后续的请求中添加获取的Cookie,这种处理方式在同一站点连续请求中特别方便

处理不信任的SSL证书

什么是SSL证书?
SSL证书是数字证书的⼀种,类似于驾驶证、护照和营业执照的电⼦副本。

因为配置在服务器上,也称为SSL服务器证书。SSL 证书就是遵守 SSL协 议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务 器身份验证和数据传输加密功能
我们来爬一个证书不太合格的网站

python 爬虫请求模块requests详解

import requests
url = 'https://inv-veri.chinatax.gov.cn/'

resp = requests.get(url)

print(resp.text)

它报了一个错

python 爬虫请求模块requests详解

我们来修改一下代码

import requests
url = 'https://inv-veri.chinatax.gov.cn/'

resp = requests.get(url,verify = False)

print(resp.text)

我们的代码又能成功爬取了

python 爬虫请求模块requests详解

到此这篇关于python 爬虫请求模块requests的文章就介绍到这了,更多相关python 爬虫requests模块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python StringIO模块实现在内存缓冲区中读写数据
Apr 08 Python
Python引用传值概念与用法实例小结
Oct 07 Python
手把手教你python实现SVM算法
Dec 27 Python
答题辅助python代码实现
Jan 16 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
python opencv之SIFT算法示例
Feb 24 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
Numpy数组的广播机制的实现
Nov 03 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 02 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 #Python
Selenium 配置启动项参数的方法
Dec 04 #Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 #Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 #Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 #Python
Selenium 安装和简单使用的实现
Dec 04 #Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 #Python
You might like
php二分法在IP地址查询中的应用
2008/08/12 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
一篇不错的Python入门教程
2007/02/08 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
python使用requests.session模拟登录
2019/08/09 Python
python实现门限回归方式
2020/02/29 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
Python如何将模块打包并发布
2020/08/30 Python
python raise的基本使用
2020/09/10 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
商务日语毕业生自荐信范文
2013/11/14 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
《绝招》教学反思
2016/02/20 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS