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

简介:

本节书摘来自异步社区《用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
相关文章
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
2月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
7天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
人工智能 自然语言处理
WebDreamer:基于大语言模型模拟网页交互增强网络规划能力的框架
WebDreamer是一个基于大型语言模型(LLMs)的网络智能体框架,通过模拟网页交互来增强网络规划能力。它利用GPT-4o作为世界模型,预测用户行为及其结果,优化决策过程,提高性能和安全性。WebDreamer的核心在于“做梦”概念,即在实际采取行动前,用LLM预测每个可能步骤的结果,并选择最有可能实现目标的行动。
64 1
WebDreamer:基于大语言模型模拟网页交互增强网络规划能力的框架
|
29天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
62 3
|
2月前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
193 4
|
2月前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
2月前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
2月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
34 1