基于Python的网页信息爬取技术研究

2021-04-22 17:14陈海燕朱庆华常莹
电脑知识与技术 2021年8期
关键词:解析器爬虫语句

陈海燕 朱庆华 常莹

摘要:现在是信息时代,互联网为我们提供了丰富的信息资源。只要我们有需要就能通过网络得到。但是正因为网络上的资源太丰富了,如果想得到需要的内容,用户就要做大量筛选和甄别工作。网络信息筛选和抓取有很多方法,比如Java、Python等语言,还有一些专门的公司为用户提供网络爬虫程序做信息的定向抓取。目前使用较多的是Python语言,文章要研究的内容是:通过使用Python库中的Beautiful Soup库快速、简捷地抓取所需信息。

关键词:BeautifulSoup;Python;网络爬虫

中图分类号:TP393        文献标识码:A

文章编号:1009-3044(2021)08-0195-02

1 BeautifulSoup介绍

Beautiful Soup是一个可以从网页文件中提取信息的Python库,它包含在bs4库里。需要注意的是下载、安装bs4时需要联网,否则安装会出错,具体命令为:pip install bs4,如图1所示。

2 解析HTML流程说明

HTML文件是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成一颗标签树。因此可以说Beautiful Soup是解析、遍历、维护“标签树”的功能库。众所周知:html由众多标签组成,如何精确定位标签,从标签中提取到需要的内容呢?

在找到对应标签位置后,熟悉html的人知道,信息一般会存储在两个位置中:

1)开始标签和结束标签中的内容;

2) 开始标签中的属性值。

例如下面这行标签:

美食网

这个标签的含义是:一个段落中有一个超级链接,链接的地址是:www.baidu.com。我们要做的就是提取之间的“美食网”文字,或者提取标签的属性值,即链接www.baidu.com内容。

3 使用python进行网页内容获取的方法

3.1引入BeautifulSoup库

程序开始的第1行需要引入BeautifulSoup库。如果bs4下出现波浪线表示安装路径有问题,需要检查。语句如图2所示。

3.2 html代码放入str

将html代码放入一个变量中,注意,由于html代码有换行,需要每一行都加上单引号,这样比较麻烦,可以把html整个代码用三个单引号里引起来,这样就简单多了,而且也增强了代码的可读性。如下所示:

str = '''西红柿炒鸡蛋

这道菜俺从小吃到大,它是我儿时的全部味觉记忆。

美食网免责声明。

'''

3.3使用lxml解析器實例化BeautifulSoup对象

BeautifulSoup支持Python标准库中的HTML解析器(HTMLParser),还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml解析器更加强大,速度更快,推荐安装使用。具体的语句如图3所示。

3.4获取title标签里的内容

title标签的含义是为网页定义标题。需要说明的是:如果要提取“标题”,只需要使用title标签名来识别,因为整个html文档中,title标签只会出现一次。具体的语句如图4所示。

3.5获取p标签里的文字

P标签是段落标签,如果要提取p标签里的内容,不能像提取title标签一样只使用p标签,因为p标签可以有多个。因此p标签要和它的class属性联合起来使用,例如3.2中给出的标签,用'first'或'second'来识别p标签。要提取class属性是first的p标签,语句如图5所示。

3.6获取所有p标签里的文字

在进行信息抓取时,有时需要提取所有p标签里的内容,这时就可以使用循环获取。具体的语句如图6所示。

以3.2的标签为例,运行结果为:

这道菜俺从小吃到大,它是我儿时的全部味觉记忆。

美食网免责声明。

3.7查找ul标签里的li标签

ul是无序列表标签,它与li标签配合使用,一对ul标签里可以包含若干对li标签。因为ul标签也可以有多个,因此ul标签也要和它的class属性联合起来使用,查找class='list1'的ul标签里的所有li标签,可以使用图7的方法。

以3.2的標签为例,运行结果

  • 食材准备
  • 制作过程
  • 同理,也可以先定位到