Py学习  »  Python

Python使用urllib爬取一个简单网页的HTML

cc_tujian埋 • 3 年前 • 82 次点击  
阅读 5

Python使用urllib爬取一个简单网页的HTML

这几天我初学Python的urllib库,学学Python网络爬虫知识,结果学起来比我想象的难得多,比学习界面都难。


urllib是什么?

我们首先了解一下 Urllib 库,它是 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用,它包含四个模块:
  • 第一个模块 request,它是最基本的 HTTP 请求模块,我们可以用它来模拟发送一请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法传入 URL 还有额外的参数,就可以模拟实现这个过程了。
  • 第二个 error 模块即异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。
  • 第三个 parse 模块是一个工具模块,提供了许多 URL 处理方法,比如拆分、解析、合并等等的方法。 第四个模块是 robotparser,主要是用来识别网站的 robots.txt 文件,然后判断哪些网站可以爬,哪些网站不可以爬的,其实用的比较少。

在这里重点对前三个模块进行下讲解。

作者:NewForMe 链接:www.jianshu.com/p/63dad93d7… 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


现在我来说一个怎么使用urllib库爬取一个网页的HTML代码,可以输出,也可以保存进一个文件

urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理authenticaton(授权验证),redirections(重定向),cookies(浏览器Cookies)以及其它内容。

我们来感受一下它的强大之处,以 Python官网为例,我们来把这个网页抓下来:

import urllib.request

response = urllib.request.urlopen('https://www.python.org')
print(response.read().decode('utf-8'))
复制代码

运行结果

这是一个截图,实际上很多行都输出在了IDLE上(我直接用的解释器)

接下来我们看下它返回的到底是什么,利用 type() 方法输出 Response 的类型。

import urllib.request

response = urllib.request.urlopen('https://www.python.org')
print(type(response))
复制代码

输出结果:

<class 'http.client.HTTPResponse'>

通过输出结果可以发现它是一个 HTTPResposne 类型的对象,它主要包含的方法有 read()、readinto()、getheader(name)、getheaders()、fileno() 等方法和 msg、version、status、reason、debuglevel、closed 等属性。 得到这个对象之后,我们把它赋值为 response 变量,然后就可以调用这些方法和属性,得到返回结果的一系列信息了。

例如调用 read() 方法可以得到返回的网页内容,调用 status 属性就可以得到返回结果的状态码,如 200 代表请求成功,404 代表网页未找到等。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/63223
 
82 次点击