屏幕抓取建议:交互式图表

Screen scraping advice: Interactive graph

本文关键字:交互式 抓取 屏幕      更新时间:2023-09-26

我最近跟随了一些关于如何使用Python的BeautifulSoup的教程,并学会了如何从网页中简单地抓取文本和url。我现在正试图从以下链接中抓取数据,

http://www.study.cam.ac.uk/undergraduate/apply/statistics/

在页面底部有一个交互式图形生成器,我想从它刮掉所有的数据,而不必花费许多小时从所有可能生成的图形中繁琐地手写下来的值。我试着使用我微不足道的初学者技术,但对我来说,在HTML中图形数据来自哪里并不明显-此外,HTML似乎是动态的,这取决于我的鼠标在屏幕上的位置。

问题:是否有可能使用这些工具抓取这些数据,如果有可能,如何?

使用浏览器开发工具,您可以看到,当您点击Show Graph按钮时,有一个POST请求前往http://www.study.cam.ac.uk/undergraduate/apply/statistics/data.php。结果是一个JSON对象,包含了构建图形所需的所有数据。

在Python中模拟这个请求,例如,使用requests模块:
import requests
URL = "http://www.study.cam.ac.uk/undergraduate/apply/statistics/data.php"
HEADERS = {'X-Requested-With': 'XMLHttpRequest'}
data = {
    'when': 'year',
    'year': 2014,
    'applications': 'on',
    'offers': 'on',
    'acceptances': 'on',
    'groupby': 'college',
    'for-5-years-what': 'university'
}
response = requests.post(URL, data=data, headers=HEADERS)
print response.json()

这里不需要BeautifulSoup。至少从你的问题中我了解到是这样的。