人工智能基础教程:Python篇(青少版)
上QQ阅读APP看书,第一时间看更新

5.4 从Web页面读数据

本节中我们使用Python来做一个简单的读取页面信息的程序。在这个程序中使用了BeautifulSoup和requests两个模块。在使用这两个模块之前可能要先进行安装。这里先列出安装方法:使用Win+R组合键打开“命令提示符”窗口,输入pip install requests安装requests模块,输入pip install beautifulsoup4安装BeautifulSoup模块。完成后就可以使用这两个模块来快速构建一个读取Web页面信息的程序了,具体程序如程序5.3所示。

程序5.3:

输出到文件内容(部分):

分析:

在对程序进行分析之前先强调一下,输出只是部分内容,程序成功执行之后会在指定目录出现相应的文件。同时,本节内容算是为后续内容进行铺垫,在这里我们只需简单了解处理步骤,本书后文会详细地讲解Python处理网络的相关知识。

程序的前两行将要用到的requests和BeautifulSoup两个模块中的内容引入。requests模块用于从指定的网址上获取信息,BeautifulSoup模块用于从获取的信息中提取结构化数据。程序的第4~7行,将想要获取信息的网址给变量url,同时将头文件给变量headers用于模拟浏览器访问。构造之后将这两个变量用于Request()方法并返回网站页面的请求对象page,通过这个对象得到页面信息page_info。

程序的第9行得到信息之后使用BeautifulSoup函数将其转化为BeautifulSoup格式同时指定html.parser作为解析器。信息转换完成之后存在变量soup中。

程序的第11行,提取soup中的所有a元素(表示Web页面中的链接部分)中class='title'的部分,即链接中的标题部分。完成之后将其输出,此时我们再看程序的输出,是一个列表,它的格式还是原始的HTML(超文本标记语言,用于静态网页的制作)格式。

程序的第13行我们使用open函数创建写入文件的file对象用于将信息输入文件中,后面部分是迭代输入titles列表的各项内容,其中有一个细节要注意,对应输出来看,列表中各项的形式为<a class="title" href="…" target="…">string</a>,这是HTML中表示链接的形式,<a>和</a>称为开始和结束标签,<a>和</a>标签中间夹着的是链接标题的内容,href的内容是a元素内容的跳转地址。通过这段介绍再看程序的第15、16行的内容就会变得很明了,使用title.string获得a元素的标题内容,使用title.get('href')得到a元素内容的跳转地址。由于网站在不断地更新,不同时间获取同网站的内容也会不相同,本次运行得到的部分信息如图5.2所示。

图5.2 获取到的网站信息(部分)