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

第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>

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

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

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

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

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

时间: 2024-12-10 00:29:13

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

用Python编写网络爬虫(一):抓取网页的含义和URL基本构成

一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止. 如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来. 这样看来,网络爬虫就是一个爬行程序,一个抓

《用Python写网络爬虫》——导读

前 言 互联网包含了迄今为止最有用的数据集,并且大部分可以免费公开访问.但是,这些数据难以复用.它们被嵌入在网站的结构和样式当中,需要抽取出来才能使用.从网页中抽取数据的过程又被称为网络爬虫.随着越来越多的信息被发布到网络上,网络爬虫也变得越来越有用. 目 录 第1章 网络爬虫简介 1.1 网络爬虫何时有用1.2 网络爬虫是否合法1.3 背景调研 1.3.1 检查robots.txt 1.3.2 检查网站地图 1.3.3 估算网站大小 1.3.4 识别网站所用技术 1.3.5 寻找网站所有者1.

《用Python写网络爬虫》——第1章 网络爬虫简介 1.1 网络爬虫何时有用

第1章 网络爬虫简介 本章中,我们将会介绍如下主题: 网络爬虫领域简介: 解释合法性质疑: 对目标网站进行背景调研: 逐步完善一个高级网络爬虫. 1.1 网络爬虫何时有用 假设我有一个鞋店,并且想要及时了解竞争对手的价格.我可以每天访问他们的网站,与我店铺中鞋子的价格进行对比.但是,如果我店铺中的鞋类品种繁多,或是希望能够更加频繁地查看价格变化的话,就需要花费大量的时间,甚至难以实现.再举一个例子,我看中了一双鞋,想等它促销时再购买.我可能需要每天访问这家鞋店的网站来查看这双鞋是否降价,也许需要

《用Python写网络爬虫》——2.3 本章小结

2.3 本章小结 在本章中,我们介绍了几种抓取网页数据的方法.正则表达式在一次性数据抓取中非常有用,此外还可以避免解析整个网页带来的开销:BeautifulSoup提供了更高层次的接口,同时还能避免过多麻烦的依赖.不过,通常情况下,lxml是我们的最佳选择,因为它速度更快,功能更加丰富,因此在接下来的例子中我们将会使用lxml模块进行数据抓取. 下一章,我们会介绍缓存技术,这样就能把网页保存下来,只在爬虫第一次运行时才会下载网页.

《用Python写网络爬虫》——2.2 三种网页抓取方法

2.2 三种网页抓取方法 现在我们已经了解了该网页的结构,下面将要介绍三种抓取其中数据的方法.首先是正则表达式,然后是流行的BeautifulSoup模块,最后是强大的lxml模块. 2.2.1 正则表达式 如果你对正则表达式还不熟悉,或是需要一些提示时,可以查阅https://docs.python.org/2/howto/regex.html 获得完整介绍. 当我们使用正则表达式抓取面积数据时,首先需要尝试匹配 元素中的内容,如下所示. >>> import re >>&

《用Python写网络爬虫》——1.5 本章小结

1.5 本章小结 本章介绍了网络爬虫,然后开发了一个能够在后续章节中复用的成熟爬虫.此外,我们还介绍了一些外部工具和模块的使用方法,用于了解网站.用户代理.网站地图.爬取延时以及各种爬取策略. 下一章中,我们将讨论如何从已爬取到的网页中获取数据.

《用Python写网络爬虫》——1.3 背景调研

1.3 背景调研 在深入讨论爬取一个网站之前,我们首先需要对目标站点的规模和结构进行一定程度的了解.网站自身的robots.txt和Sitemap文件都可以为我们提供一定的帮助,此外还有一些能提供更详细信息的外部工具,比如Google搜索和WHOIS. 1.3.1 检查robots.txt 大多数网站都会定义robots.txt文件,这样可以让爬虫了解爬取该网站时存在哪些限制.这些限制虽然仅仅作为建议给出,但是良好的网络公民都应当遵守这些限制.在爬取之前,检查robots.txt文件这一宝贵资源

《用Python写网络爬虫》——1.4 编写第一个网络爬虫

1.4 编写第一个网络爬虫 为了抓取网站,我们首先需要下载包含有感兴趣数据的网页,该过程一般被称为爬取(crawling).爬取一个网站有很多种方法,而选用哪种方法更加合适,则取决于目标网站的结构.本章中,首先会探讨如何安全地下载网页,然后会介绍如下3种爬取网站的常见方法: 爬取网站地图: 遍历每个网页的数据库ID: 跟踪网页链接. 1.4.1 下载网页 要想爬取网页,我们首先需要将其下载下来.下面的示例脚本使用Python的urllib2模块下载URL. import urllib2 def

《用Python写网络爬虫》——1.2 网络爬虫是否合法

1.2 网络爬虫是否合法 网络爬虫目前还处于早期的蛮荒阶段,"允许哪些行为"这种基本秩序还处于建设之中.从目前的实践来看,如果抓取数据的行为用于个人使用,则不存在问题:而如果数据用于转载,那么抓取的数据类型就非常关键了. 世界各地法院的一些案件可以帮助我们确定哪些网络爬虫行为是允许的.在Feist Publications, Inc.起诉Rural Telephone Service Co.的案件中,美国联邦最高法院裁定抓取并转载真实数据(比如,电话清单)是允许的.而在澳大利亚,Tel