第一个Python爬虫程序

2021-10-15 14:18

    本节编写一个最简单的爬虫程序,作为学习Python爬虫前的开胃小菜。

    下面使用Python内置的urllib库获取网页的html信息。注意,urllib库属于Python的标准库模块,无须单独安装,它是Python爬虫的常用模块。

    获取网页html信息

    1)获取响应对象

    向百度(http://www.baidu.com/)发起请求,获取百度首页的HTML信息,代码如下:

#导包,发起请求使用urllib库的request请求模块
import urllib.request
# urlopen()向URL发请求,返回响应对象,注意url必须完整
response=urllib.request.urlopen('http://www.baidu.com/')
print(response)

    上述代码会返回百度首页的响应对象,其中urlopen()表示打开一个网页地址。注意:请求的url必须带有http或者https传输协议。

    输出结果,如下所示:

<http.client.HTTPResponse object at 0x032F0F90>

    上述代码也有另外一种导包方式,也就是使用from,代码如下所示:

#发起请求使用urllib库的request请求模块
from urllib import request
response=request.urlopen('http://www.baidu.com/')
print(response)

    2)输出HTML信息

    在上述代码的基础上继续编写如下代码:

#提取响应内容
html = response.read().decode('utf-8')
#打印响应内容
print(html)

    输出结果如下,由于篇幅过长,此处只做了简单显示:

<!DOCTYPE html><!--STATUS OK--> <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><meta name="description" content="全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到...">...</html>

    通过调用response响应对象的read()方法提取HTML信息,该方法返回的结果是字节串类型(bytes),因此需要使用decode()转换为字符串。程序完整的代码程序如下:

import urllib.request
# urlopen()向URL发请求,返回响应对象
response=urllib.request.urlopen('http://www.baidu.com/')
# 提取响应内容
html = response.read().decode('utf-8')
# 打印响应内容
print(html)

    通过上述代码获取了百度首页的html信息,这是最简单、最初级的爬虫程序。后续我们还学习如何分析网页结构、解析网页数据,以及存储数据等。

    常用方法

    在本节您认识了第一个爬虫库urllib,下面关于urllib做简单总结。

    1)urlopen()

    表示向网站发起请求并获取响应对象,如下所示:

urllib.request.urlopen(url,timeout)

    urlopen()有两个参数,说明如下:

    url:表示要爬取数据的url地址。

    timeout:设置等待超时时间,指定时间内未得到响应则抛出超时异常。

    2)Request()

    该方法用于创建请求对象、包装请求头,比如重构User-Agent(即用户代理,指用户使用的浏览器)使程序更像人类的请求,而非机器。重构User-Agent是爬虫和反爬虫斗争的第一步。在下一节会做详细介绍。

urllib.request.Request(url,headers)

    参数说明如下:

    url:请求的URL地址。

    headers:重构请求头。

    3)html响应对象方法

bytes = response.read() # read()返回结果为 bytes 数据类型
string = response.read().decode() # decode()将字节串转换为 string 类型
url = response.geturl() # 返回响应对象的URL地址
code = response.getcode() # 返回请求时的HTTP响应码

    4)编码解码操作

#字符串转换为字节码
string.encode("utf-8") 
#字节码转换为字符串
bytes.decode("utf-8") 

    以上就是小编为大家整理发布的“第一个Python爬虫程序”一文,更多相关内容尽在开课吧广场Python教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享