Python 3爬虫、数据清洗与可视化实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.5 清洗和组织数据

至此,获得了一段目标的HTML代码,但还没有把数据提取出来,接下来在PyCharm中输入以下代码。

        for item in data:              #soup匹配到的有多个数据,用for循环取出
            result={
              'title':item.get_text(),
              'link':item.get('href')
            }
            print(result)

代码运行结果如图2-22所示。

图2-22

首先明确要提取的数据是标题和链接,标题在<a>标签中,提取标签的正文用get_text()方法。链接在<a>标签的href属性中,提取标签中的href属性用get()方法,在括号中指定要提取的属性数据,即get('href')。

从图2-23中可以发现,每一篇文章的链接中都有一个数字ID。下面用正则表达式提取这个ID。

图2-23

需要使用的正则符号如下。

\d匹配数字

+ 匹配前一个字符1次或多次

在Python中调用正则表达式时使用re库,这个库不用安装,可以直接调用。在PyCharm中输入以下代码。

        import re

        for item in data:
            result={
              'title':item.get_text(),
              'link':item.get('href'),
              'ID':re.findall('\d+', item.get('href'))
            }
            print(result)

运行结果如图2-24所示。

这里使用re库的findall方法,第一个参数表示正则表达式,第二个参数表示要提取的文本。