从动态网页抓取数据:TfL自行车数据抓取教程

花韻仙語
发布: 2025-08-15 17:44:01
原创
334人浏览过

从动态网页抓取数据:tfl自行车数据抓取教程

本文介绍了如何从使用 JavaScript 动态加载数据的网页中抓取数据,以伦敦交通局 (TfL) 自行车数据为例。我们将演示如何通过分析浏览器的开发者工具来查找 API 请求,并使用 Python 和 BeautifulSoup 库解析 XML 响应,提取所需的数据文件 URL。本教程适用于初学者,并提供清晰的代码示例和步骤说明。

动态网页数据抓取:寻找隐藏的API

许多现代网站使用 JavaScript 动态加载数据。这意味着当你访问网页时,最初看到的可能只是一个框架,而实际的数据是在后台通过 API 请求加载的。直接使用 requests 和 BeautifulSoup 抓取网页内容通常只能获取到初始的 HTML 代码,而无法获取到动态加载的数据。

在这种情况下,我们需要分析网页的网络请求,找到加载数据的 API 接口。常用的方法是使用浏览器的开发者工具。

步骤如下:

  1. 打开目标网页(例如:https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577d)。
  2. 打开浏览器的开发者工具(通常按 F12 键)。
  3. 切换到 "Network"(网络)选项卡。
  4. 刷新网页,观察网络请求。
  5. 筛选 "XHR" 或 "Fetch/XHR" 请求,查找包含数据的文件。

通过分析 TfL 自行车数据的网页,我们可以发现一个名为 https://s3-eu-west-1.amazonaws.com/cycling.data.tfl.gov.uk/?list-type=2&max-keys=1500 的 API 请求,它返回一个 XML 文件,其中包含了所有数据文件的 URL。

使用 BeautifulSoup 解析 XML 数据

找到 API 接口后,我们可以使用 requests 获取 XML 数据,然后使用 BeautifulSoup 解析 XML,提取所需的数据文件 URL。

360 AI助手
360 AI助手

360公司推出的AI聊天机器人聚合平台,集合了国内15家顶尖的AI大模型。

360 AI助手 140
查看详情 360 AI助手

以下是一个示例代码:

import requests
from bs4 import BeautifulSoup

soup=BeautifulSoup(requests.get('https://s3-eu-west-1.amazonaws.com/cycling.data.tfl.gov.uk/?list-type=2&max-keys=1500').text, 'xml')
for c in soup.select('contents key'):
    if c.text.startswith('usage-stats') and c.text.endswith('.csv'):
        print('https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577d'+c.text)
登录后复制

代码解释:

  1. import requests: 导入 requests 库,用于发送 HTTP 请求。
  2. from bs4 import BeautifulSoup: 导入 BeautifulSoup 库,用于解析 HTML 和 XML。
  3. requests.get('https://s3-eu-west-1.amazonaws.com/cycling.data.tfl.gov.uk/?list-type=2&max-keys=1500').text: 发送 GET 请求到 API 接口,获取 XML 数据。
  4. BeautifulSoup(..., 'xml'): 使用 BeautifulSoup 解析 XML 数据。注意这里需要指定解析器为 'xml'。
  5. soup.select('contents key'): 使用 CSS 选择器 contents key 找到所有包含文件名的 XML 标签。
  6. if c.text.startswith('usage-stats') and c.text.endswith('.csv'): 过滤文件名,只保留以 'usage-stats' 开头且以 '.csv' 结尾的文件。
  7. print('https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577d'+c.text): 打印完整的 URL。

运行结果:

https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577dusage-stats/01aJourneyDataExtract10Jan16-23Jan16.csv
https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577dusage-stats/01b Journey Data Extract 24Jan16-06Feb16.csv
https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577dusage-stats/01bJourneyDataExtract24Jan16-06Feb16.csv
https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577dusage-stats/02aJourneyDataExtract07Fe16-20Feb2016.csv
https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577dusage-stats/02bJourneyDataExtract21Feb16-05Mar2016.csv
https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577dusage-stats/03JourneyDataExtract06Mar2016-31Mar2016.csv
...
登录后复制

总结

本教程介绍了如何从动态网页中抓取数据,关键在于找到加载数据的 API 接口,并使用合适的工具解析返回的数据。对于 XML 数据,可以使用 BeautifulSoup 配合 'xml' 解析器进行解析。掌握这些技巧可以帮助你从各种复杂的网页中提取所需的数据。

注意事项:

  • 在抓取数据时,请遵守网站的 robots.txt 协议,并尊重网站的服务条款。
  • 频繁的抓取可能会给网站带来负担,请合理控制抓取频率。
  • 如果网站的反爬虫机制比较严格,可能需要使用代理 IP、设置请求头等方法来规避反爬虫策略。

以上就是从动态网页抓取数据:TfL自行车数据抓取教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号