首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python爬虫学习(三)urllib进阶使用

urllib中包括了四个模块:

可以用来发送request和获取request的结果

包含了 产生的异常

用来解析和处理URL

用来解析页面的robots.txt文件

在之前内容中,我们只涉及一些相对简单的操作,但是现实操作中,可能会有更高要求的使用,比如Cookies处理,代理设置等等,我们该怎么办呢?

代理设置

爬虫固然很好用,但是一般网站都会采取一些反爬措施,这时候就有必要了解一下代理了,HTTP协议(三)之代理。

了解了基本原理后,我们就直接上代码

然后,使用 生成一个代理处理器,在处理器的基础上新建一个 ,使用opener的 方法发送一个请求,和之前使用的 方法类似。

于是,我们同样可以得到:

如果你的IP被某个网站封了,不妨采用这种方法再试试!

Cookies

首先声明一个CookieJar对象,接下来我们就需要利用HTTPCookieProcessor来构建一个handler,最后利用build_opener()方法构建出opener,执行open()函数。

执行结果如下:

输出了Cookies.

关于urllib.request模块的更多内容,可以查看:https://docs.python.org/3.6/library/urllib.request.html#module-urllib.request

异常处理URLError

通常引起URLError的原因是:无网络连接(没有到目标服务器的路由)、访问的目标服务器不存在。在这种情况下,异常对象会有reason属性(是一个(错误码、错误原因)的元组)。

捕获到了错误:

HTTPError

每一个从服务器返回的HTTP响应都有一个状态码。其中,有的状态码表示服务器不能完成相应的请求,默认的处理程序可以为我们处理一些这样的状态码(如返回的响应是重定向,urllib会自动为我们从重定向后的页面中获取信息)。有些状态码,urllib模块不能帮我们处理,那么urlopen函数就会引起HTTPError异常,其中典型的有404/401。

HTTPError异常的实例有整数类型的code属性,表示服务器返回的错误状态码。

urllib模块默认的处理程序可以处理重定向(状态码是300范围),而且状态码在100-299范围内表示成功。因此,能够引起HTTPError异常的状态码范围是:400-599.

当引起错误时,服务器会返回HTTP错误码和错误页面。你可以将HTTPError实例作为返回页面,这意味着,HTTPError实例不仅有code属性,还有read、geturl、info等方法。

更多的内容,请大家查看官方文档!

以上。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180222G089F700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券