python修改静态html_Python 静态页面爬虫---urllib3库实现

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')) #返回获取的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值