
本文介绍如何使用Python抓取TfL(伦敦交通局)自行车共享计划的CSV数据文件,这些数据通过JavaScript动态加载。我们将展示如何通过分析浏览器的开发者工具来定位API请求,并使用BeautifulSoup解析XML响应,最终提取所需的CSV文件链接。本文提供详细的代码示例,帮助读者理解和实践动态网页数据的抓取方法。
传统的网页抓取方法,如使用requests和BeautifulSoup直接请求网页HTML内容,并解析其中的链接,在面对动态加载数据时会失效。这是因为网页的初始HTML可能不包含所有的数据,数据通常通过JavaScript在浏览器中动态加载。
例如,在TfL自行车数据网站(https://www.php.cn/link/2dd413603aecf86981529a0cb6e4f35e and Conditions链接,无法获取实际的CSV文件链接。
要解决这个问题,我们需要找到加载数据的API请求。现代浏览器都提供了强大的开发者工具,可以用来分析网络请求。
在这个例子中,通过分析可以发现,数据是通过请求https://s3-eu-west-1.amazonaws.com/cycling.data.tfl.gov.uk/?list-type=2&max-keys=1500这个URL获取的,返回的是一个XML文件,包含了所有CSV文件的信息。
找到API请求后,我们可以使用requests库获取XML响应,并使用BeautifulSoup解析它,提取CSV文件的URL。
以下是示例代码:
import requests
from bs4 import BeautifulSoup
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() # 检查请求是否成功
soup = BeautifulSoup(response.text, 'xml') # 指定解析器为xml
for c in soup.find_all('Key'): # 使用find_all方法
if c.text.startswith('usage-stats') and c.text.endswith('.csv'):
print('https://cycling.data.tfl.gov.uk/'+c.text)代码解释:
通过以上步骤,我们可以成功抓取TfL自行车数据网站上的CSV文件链接,为后续的数据分析工作打下基础。掌握这种动态网页数据的抓取方法,可以帮助我们从更多复杂的网站获取所需的数据。
以上就是Web Scraping 动态加载数据:从TfL自行车数据抓取CSV文件的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号