【Python3网络爬虫开发实战】3.1.1-发送请求

【摘要】使用urllib的request模块,我们可以方便地实现请求的发送并得到响应,本节就来看下它的具体用法。

1. urlopen()

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

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

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

运行结果如图3-1所示。

3-1.png

图3-1 运行结果

这里我们只用了两行代码,便完成了Python官网的抓取,输出了网页的源代码。得到源代码之后呢?我们想要的链接、图片地址、文本信息不就都可以提取出来了吗?

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

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代表网页未找到等。

下面再通过一个实例来看看:

import urllib.request
 
response = urllib.request.urlopen('https://www.python.org')
print(response.status)
print(response.getheaders())
print(response.getheader('Server'))

运行结果如下:

200
[('Server', 'n

来源:华为云社区  作者:崔庆才丨静觅

原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165808.html