《用Python写网络爬虫》——第2章 数据抓取 2.1 分析网页

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-21 14:05   33   0

本节书摘来自异步社区《用Python写网络爬虫》一书中的第2章,第2.1节,作者 [澳]Richard Lawson(理查德 劳森),李斌 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第2章 数据抓取

在上一章中,我们构建了一个爬虫,可以通过跟踪链接的方式下载我们所需的网页。虽然这个例子很有意思,却不够实用,因为爬虫在下载网页之后又将结果丢弃掉了。现在,我们需要让这个爬虫从每个网页中抽取一些数据,然后实现某些事情,这种做法也被称为抓取(scraping)

首先,我们会介绍一个叫做Firebug Lite的浏览器扩展,用于检查网页内容,如果你有一些网络开发背景的话,可能已经对该扩展十分熟悉了。然后,我们会介绍三种抽取网页数据的方法,分别是正则表达式、Beautiful Soup和lxml。最后,我们将对比这三种数据抓取方法。

2.1 分析网页

想要了解一个网页的结构如何,可以使用查看源代码的方法。在大多数浏览器中,都可以在页面上右键单击选择View page source选项,获取网页的源代码,如图2.1所示。

我们可以在HTML的下述代码中找到我们感兴趣的数据。

    <table>
    <tr id="places_national_flag__row"><td class="w2p_fl"><label
      for="places_national_flag"
        id="places_national_flag__label">National Flag:
          </label></td><td class="w2p_fw"><img
            src="/places/static/images/flags/gb.png" /></td><td
              class="w2p_fc"></td></tr>
    ...
    <tr id="places_neighbours__row"><td class="w2p_fl"><label
      for="places_neighbours"
        id="places_neighbours__label">Neighbours: </label></td><td
          class="w2p_fw"><div><a href="/iso/IE">IE </a></div></td><td
            class="w2p_fc"></td></tr></table>


4d7b8e6a5558cfe9ea6103375bb3f5b886438206

对于浏览器解析而言,缺失空白符和格式并无大碍,但在我们阅读时则会造成一定困难。要想更好地理解该表格,我们将使用Firebug Lite扩展。该扩展适用于所有浏览器,我们可以通过 https://getfirebug.com/firebuglite 页面获取到该扩展。如果愿意的话,Firefox用户可以安装完整版的Firebug扩展,不过Lite版本已经包含了我们在本章和第6章中所用到的功能。

Firebug Lite安装完成后,可以右键单击我们在抓取中感兴趣的网页部分,然后在菜单中选择Inspect with Firebug Lite,如图2.2所示。


866944e3956e65b1c78aff685bc4e495aba99fd2

此时,浏览器就会打开如图2.3所示的Firebug面板,并显示选中元素周围的HTML层次结构。

如图2.3所示,当选择国家面积这一属性时,我们可以从Firebug面板中清晰地看到,该值包含在class为w2p_fw的

元素中,而元素又是ID为places_area__row的


87a6b7f55d484b0bd961dd709159ac553c11888b
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP