python request 超时_Python自带爬虫库urllib使用大全

这篇文章主要来讲解下Python自带的爬虫库urllib常见用法,主要围绕urllib定义、urllib的常用模块和urllib+lxml爬虫案例三个部分进行展开。

一、什么是urllib

它是一个http请求的Python自带的标准库,无需安装,直接可以用。并且提供了如下功能:网页请求、响应获取、代理和cookie设置、异常处理、URL解析,可以说是一个比较强大的模块。

二、urllib模块

可分为以下模块:

urllib.request 请求模块urllib.error 异常处理模块urllib.parse 解析模块urllib.robotparser 解析模块

那么,我们先从第一个模块开始说起吧,首先说一下它的大致用法:

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) #里面有很多方法,类似与requests模块中的renquest方法

request里包含了很多方法,如果我们要发送一个请求并读取请求内容,最简单的方法就是:

请求格式:

urllib.request.urlopen(url,data,timeout)

url :请求地址

data:请求数据

timeout:请求超时时间

a2243578d4a0183bcaec6171d148ac6d.png

这里采用的是get请求,如果想要进行post请求,只需给data方法传参数即可,这里有个问题需要,因为传递参数必须是字节,所以得先编码成bytes才能读取。

0521a83e8a7ea85e6bba3996473eb80a.png

也可以这样写:

497cb56f8fa0aad0b8160268dd055ad0.png

通过解析模块先将它解析为byte格式然后读取,同样行之有效,这样就完成了一次post请求。

通过上面例子我们找到了request模块的使用方法,我们使用response.read获取的是响应体的内容,我们还可以通过response.status、response.getheaders.response.getheader("server"),获取状态码以及头部信息,如果我们要给请求的网址添加头部信息的话了,就要使用urllib.request.Request方法了。

它的用法为:

urllib.request.Request(url,data,headers,timeout,method)

url:请求地址

data:请求数据

headers:请求头

timeout:请求超时时间

method:请求方法,如get post

大致了解下我们可以先来访问下起点网:

from urllib import request, parseurl = 'https://book.qidian.com/info/1014243481#Catalog'headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36', 'Host': 'book.qidian.com'}data = { 'hw': 'hw'}data = bytes(parse.urlencode(data), encoding='utf8')req = request.Request(url=url, data=data,timeout=2,headers=headers, method='POST')response = request.urlopen(req)print(response.read.decode('utf-8'))

可以看出这是个post请求,因为method设置为post,data传了参数。

这里补充说明下有个urlencode方法,它的作用是将字典转换为url,例子如下:

from urllib.parse import urlencodedata = { "name":"hw
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值