
本教程旨在解决使用Python爬虫抓取动态加载的CSV数据时遇到的问题。我们将以伦敦交通局(TfL)自行车使用数据为例,演示如何通过分析XHR/API请求,找到包含数据链接的XML文件,并使用BeautifulSoup解析XML,最终提取所需的CSV文件URL。本文将提供详细的代码示例和步骤,帮助读者掌握爬取动态加载数据的通用方法。
网络爬虫在面对静态网页时通常表现良好,但当网页内容通过JavaScript动态加载时,传统的爬取方法可能无法获取完整的数据。本教程将介绍如何应对这种情况,以伦敦交通局(TfL)的自行车使用数据为例,演示如何抓取动态加载的CSV文件链接。
当使用requests和BeautifulSoup等库直接请求包含动态内容的网页时,服务器返回的HTML可能不包含完整的数据。这是因为数据是通过JavaScript在客户端加载的,而requests只获取服务器返回的初始HTML。例如,直接爬取TfL自行车数据页面时,只能获取到条款和条件链接,而无法获取到实际的CSV文件链接。
解决动态加载问题的关键在于找到加载数据的API接口。现代浏览器提供了开发者工具,可以用来检查网络请求(包括XHR/API请求)。
立即学习“Python免费学习笔记(深入)”;
步骤:
通过分析TfL自行车数据页面,可以发现一个名为https://s3-eu-west-1.amazonaws.com/cycling.data.tfl.gov.uk/?list-type=2&max-keys=1500的请求,其响应是一个包含CSV文件链接的XML文件。
找到包含数据链接的XML文件后,可以使用requests获取XML内容,并使用BeautifulSoup解析XML,提取所需的CSV文件链接。
import requests
from bs4 import BeautifulSoup
# 获取XML内容
url = 'https://s3-eu-west-1.amazonaws.com/cycling.data.tfl.gov.uk/?list-type=2&max-keys=1500'
response = requests.get(url)
response.raise_for_status() # 检查请求是否成功
# 使用BeautifulSoup解析XML
soup = BeautifulSoup(response.text, 'xml')
# 提取CSV文件链接
for content in soup.find_all('Contents'):
key = content.find('Key').text
if key.startswith('usage-stats') and key.endswith('.csv'):
csv_url = 'https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577d' + key
print(csv_url)代码解释:
上面的代码可以提取所有CSV文件链接。如果只需要特定时间段的数据(例如,2021年到2023年),可以在代码中添加额外的过滤条件。
import requests
from bs4 import BeautifulSoup
# 获取XML内容
url = 'https://s3-eu-west-1.amazonaws.com/cycling.data.tfl.gov.uk/?list-type=2&max-keys=1500'
response = requests.get(url)
response.raise_for_status() # 检查请求是否成功
# 使用BeautifulSoup解析XML
soup = BeautifulSoup(response.text, 'xml')
# 提取CSV文件链接
for content in soup.find_all('Contents'):
key = content.find('Key').text
if key.startswith('usage-stats') and key.endswith('.csv'):
# 增加时间段过滤条件
if '2021' in key or '2022' in key or '2023' in key:
csv_url = 'https://www.php.cn/link/64ad8f3af92ef8d9a1c7dfd7265e577d' + key
print(csv_url)注意:
本教程介绍了如何使用Python爬取动态加载的CSV数据。关键步骤包括:
注意事项:
通过本教程的学习,读者应该能够掌握爬取动态加载数据的基本方法,并能够应用于其他类似场景。
以上就是使用Python爬取动态加载的CSV数据:TfL自行车数据案例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号