1、生产请求

urllib3库是通过PoolManager实例来生产请求的,由该实例处理与线程池的链接机线程安全的所有细节

urllib3.request函数创建一个请求

语法:

http =urllib3.PoolManager()

rq= http.request('method','url',headers={默认为None},fields={默认为None},**urlopen_kw)

参数解释:

参数名称

说明

method

表示请求的类型。GET,POST等,必须写

url

表示字符串形式的网址

fields

表示请求类型所带的参数

headers

表示请求头所带的参数

**urlopen_kw

接收dict和python中的数据类型的数据,依据具体需求及请求的类型可添加的参数,通常参数赋值为字典类型或者具体数据

2、请求头处理

request函数中,参数header通常定义为一个字典类型来实现

#生产PoolManager实例

http =urllib3.PoolManager()#发送request请求

rq = http.request("GET",'https://www.baidu.com/')#发送带有header请求头的request请求

hd = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/78.0.3904.108'} #定义header参数,常用的是dict类型

rq = http.request("GET",'https://www.baidu.com/',headers=hd)

3、设置timeout

timeout参数主要是为了防止因为网络不稳定、服务器不稳定等问题造成链接不稳定时丢包

timeout设置有两种方法:

url = 'https://www.baidu.com/'

#方法1: 在PoolManager实例中设置timeout参数

http = urllib3.PoolManager(timeout = 4)

http1= urllib3.PoolManager(timeout=urllib3.Timeout(connect=1.0,read=3.0)) #分别设置链接与读取的timeout参数#方法2: 直接在url参数后面添加统一的timeout参数

rq = http1.request('GET',url,timeout=3)

rq1= http1.request('GET',url,timeout=urllib3.Timeout(connect=1.0,read=3.0)) #分别设置链接与读取的timeout参数

注意:以request函数中的timeout参数,会覆盖PoolManager实例的timeout参数

4、请求重试设置(retries:重试,redirect:重定性)

retries:默认值为3,设置时参数必须为整数

retries:如果没有设置redirect时,表示同时设置重试和重定向的次数,

如果设置了 redirect时,retries表示设置重试次数,redirect表示重定向次数

url = 'https://www.baidu.com/'

#方法1: 在PoolManager实例中设置retries参数

http = urllib3.PoolManager(retries = 4)

http1= urllib3.PoolManager(timeout=urllib3.Timeout(connect=1.0,read=3.0)) #分别设置链接与读取的timeout参数#方法2: 直接在url参数后面添加统一的retries参数

rq = http1.request('GET',url,retries=3) #请求重试和重定向都为3次

rq1 = http1.request('GET',url,retries=3,redirect=4) #请求重试3次,重定向4次

rq2 = http1.request('GET',url,retries=False) #同时关闭请求重试与重定向

rq3 = http1.request('GET',url,redirect=False) #仅关闭重定向

5、生产一个完整http请求

#创建PoolManager实例

Http =urllib3.PoolManager()#请求方式

method = "GET"

#请求目标URL地址

url = 'https://www.baidu.com/'

#请求头信息

head = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/78.0.3904.108'}#设置timeout,链接超时1秒,读取超时3秒

timeout = urllib3.Timeout(connect=1.0,read=3.0)#设置重试次数

retries = 4

#设置重定向次数

redirect = 8

#请求

requests = Http.request(method,url,headers=head,timeout=timeout,retries=retries,redirect=redirect)print(requests.status) #requests.status返回状态码

print(requests.data.decode('utf8')) #返回获取的内容

python修改静态html_Python 静态页面爬虫---urllib3库实现相关推荐

  1. 《静态页面爬虫》读后总结

    http://www.cnblogs.com/chenqingyang/p/3762123.html这篇<静态页面爬虫> 1. 不确定到底是不是在登陆状态下抓取用户评论的. 我在浏览器里, ...

  2. Python分布式动态页面爬虫研究

    Selenium 的 Webdriver 爬取动态网页效果虽然不错,但效率方面并不如人意.最近一直研究如何提高动态页面爬虫的效率,方法无非高并发和分布式两种.过程中有很多收获,也踩了不少坑,在此一并做 ...

  3. Python-Flask入门,静态文件、页面跳转、错误信息、动态网页模板

    Python-Flask入门及路由基础请参看Python-Flask入门,路由route.项目启动.修改网址端口.获取URL地址和参数.Form数据_无敌路路帅气的博客-CSDN博客 本节重点讲述静态 ...

  4. html太极图代码静态_如何做URL静态化?和页面的静态化

    为什么要进行URL静态化? 1.更好的迎合搜索引擎工作原理的爬行抓取机制: 2.把网站URL静态化更有助于网站获得好的排名: 3.URL静态化有利于用户体验.不容易出错 4.可以提高网站访速度.完全性 ...

  5. php怎么分割页面,将一个页面分成多个html文件(静态html分割页面)

    静态html分割页面,达到类似PHP等动态页面的include引入页面效果. 用html把首页分成三个文件 web.png 在PHP.JSP等动态页面开发中,页面里引入其它页面只需include()进 ...

  6. 使用Python,OpenCV从静态背景中提取移动前景

    使用Python,OpenCV从静态背景中提取移动前景 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍OpenCV中的背景减法方法--即从静态背景中提取移动前景.在许多基于视觉的应用中,背 ...

  7. build vue 静态化_页面静态化

    页面静态化和静态缓存 静态缓存:还需要请求php一些简单的判断,只是一些复杂的逻辑结构不需要再进行php处理.如在缓存数据库中的数据,这样就不用每次都请求数据库.典型的例子就是smarty中有页面静态 ...

  8. 静态的html页面想要设置使用浏览器缓存

    设置html页面缓存方法: 静态的html页面想要设置使用缓存: 通过HTTP的META设置expires和cache-control code 1.  <meta http-equiv=&qu ...

  9. php静态页面制作,ps制作静态的html页面

    这篇教程是分享ps如何制作静态的html页面方法,教程制作出来的效果还是挺不错的,难度不是很大,喜欢的朋友快快来学习吧 ps是一个强大的修图软件,那你知道其实ps也可以制作html页面吗.小编将告诉你 ...

最新文章

  1. Centos7安装Miniconda及配置jupyter
  2. 040_Tooltip文字提示
  3. [PPOPP 15] PoweSwitch: 基于同步异步切换的分布式大规模图处理系统 学习总结
  4. 深度揭秘!蚂蚁业务自定义监控大盘是怎么设计的?
  5. [aspnetcore.apidoc]一款很不错的api文档生成工具
  6. java堆栈类在哪个包里_Java堆栈Stack类的使用
  7. AOP的底层实现-CGLIB动态代理和JDK动态代理
  8. 《深入浅出DPDK》读书笔记(二):网卡的读写数据操作
  9. hdu 5411 CRB and Puzzle 矩阵高速幂
  10. CAS(Compare and Swap)理解
  11. 逆向分析CrackMe系列——CrackMe001
  12. 杨辉三角相关性质以及组合数
  13. win7设置自动开机时间_使计算机自动开机
  14. 安装python3.8出现ModuleNotFoundError: No module named ‘_ctypes’解决办法
  15. 利用SHA-1算法和RSA秘钥进行签名验签(带注释)
  16. 数据防泄漏加密保护方案笔记
  17. VC下自制一个MusicPlayer:调用activemovie控件
  18. Python--生成测试电话号码
  19. Drug Discovery Today| 频繁命中化合物:高通量筛选中需警惕的假阳性结果
  20. arcgis安装后重启提示 flexnet vendor daemon 交互式服务检测

热门文章

  1. 数据库练习(二)三个数据库根据指定id获取name和存储数据库名称
  2. 不能用蛮力法解决的问题_溆浦事蒙汉:脱贫攻坚绝不能心浮气躁骄傲自满疲倦厌战...
  3. iphone版 天行skyline_Skyline QT
  4. 平行空间怎么设置32位_高低床怎么设置不占空间
  5. 10个开源工业检测数据集汇总
  6. 11月AI大事件回顾:GPT3开放使用/女娲视觉大模型/AE文艺复兴/...
  7. Netty堆外内存泄露排查盛宴
  8. 论文浅尝|简单高效的知识图谱表示学习负样本采样方法
  9. Dockerfile构建python 运行项目运行环境
  10. distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse(‘setupto