urllib库的使用

urllib库的使用

前言:

      urllib的帮助文档:https://docs.python.org/zh-cn/3/library/urllib.html

      urllib 库,它是 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用,它包含四个模块:

        第一个模块 request,它是最基本的 HTTP 请求模块,它来模拟发送一请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法传入 URL 还有额外的参数,就可以模拟实现这个过程。

        第二个 error 模块即异常处理模块,如果出现请求错误,可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。

        第三个 parse 模块是一个工具模块,提供了许多 URL 处理方法,比如拆分、解析、合并等等的方法。

        第四个模块是 robotparser,主要是用来识别网站的 robots.txt 文件,然后判断哪些网站可以爬,哪些网站不可以爬的,一般很少用到,不做记录了。

        调用方法(分两种方法):

        其一:import urllib.request

        其二:import urllib

                   from urllib import request

一、请求模块

        1、urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

                1)、 url 参数是请求 URL,这个是必传参数,其他的都是可选参数。

                2)、data 参数如果要传必须传 bytes(字节流)类型的,如果是一个字典,可以先用 urllib.parse 模块里的 urlencode() 编码。

                3)、 headers 参数是一个字典,这个就是 Request Headers 了,你可以在构造 Request 时通过 headers 参数直接构造,也可以通过调用 Request 实例的 add_header() 方法来添加, Request Headers 最常用的用法就是通过修改 User-Agent 来伪装浏览器,默认的 User-Agent 是 Python-urllib,我们可以通过修改它来伪装浏览器。

                4)、 origin_req_host 参数指的是请求方的 host 名称或者 IP 地址。

                5)、unverifiable 参数指的是这个请求是否是无法验证的,默认是False。意思就是说用户没有足够权限来选择接收这个请求的结果。例如我们请求一个 HTML 文档中的图片,但是我们没有自动抓取图像的权限,这时 unverifiable 的值就是 True。

                6)、 method 参数是一个字符串,它用来指示请求使用的方法,比如GET,POST,PUT等等。

        2、urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

        urlopen()方法中的url参数可以是字符串,也可以是一个Request对象

                1)、data参数:post请求;data 参数是可选的,如果要添加 data,它要是字节流编码格式的内容,即 bytes 类型,通过 bytes() 方法可以进行转化。

data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')

采用了 bytes() 方法,第一个参数需要是 str(字符串)类型,需要用 urllib.parse 模块里的 urlencode() 方法来将参数字典转化为字符串。第二个参数指定编码格式,在这里指定为 utf8。

                2)、urlopen()中的参数timeout:设置请求超时时间,单位为秒,意思就是如果请求超出了设置的这个时间还没有得到响应,就会抛出异常,如果不指定,就会使用全局默认时间。它支持 HTTP、HTTPS、FTP 请求。

                3)、context 参数,它必须是 ssl.SSLContext 类型,用来指定 SSL 设置。

                         cafile 和 capath 两个参数是指定 CA 证书和它的路径,这个在请求 HTTPS 链接时会有用。

                         cadefault 参数现在已经弃用了,默认为 False。

        3、使用代理代理:为了防止被发现封IP,伪装IP

                proxy_handler = urllib.request.ProxyHandler({'代理类型':'代理IP : 代理端口号'})

二、处理异常:urllib.error

        可以捕获三种异常:URLError,HTTPError(是URLError类的一个子类),ContentTooShortError

               URLError只有一个reason属性:报错则是页面不存在:Not Found              

               HTTPError有三个属性:code,reason,headers 

                       code:返回 HTTP Status Code,即状态码,比如 404 网页不存在,500 服务器内部错误等等。

                       reason:同父类一样,返回错误的原因。

                       header:,返回 Request Headers。

三、url解析模块:urllib.parse

        from urllib import request, parse

        data = bytes(parse.urlencode(dict), encoding='utf8') # 将字典解析成Unicode码,再转换成utf-8,再转换成比特流


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值