屏幕抓取建议:交互图表
我最近跟着一些教程学习了如何用Python的BeautifulSoup库来抓取网页上的文本和链接。现在我想从以下链接抓取数据:
http://www.study.cam.ac.uk/undergraduate/apply/statistics/
这个页面底部有一个互动图表生成器,我想从中抓取所有的数据,而不想花很多时间一个一个手动记录下所有可能生成的图表的数值。我尝试用我那点初学者的技巧,但我不太清楚图表数据在HTML的哪个地方,而且HTML似乎还会根据我鼠标在屏幕上的位置而变化。
我的问题是:用这些工具抓取这些数据是否可行,如果可以的话,应该怎么做?
1 个回答
4
使用浏览器的开发者工具,你可以看到,当你点击 显示图表
按钮时,会发送一个 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
。至少,根据我对你问题的理解是这样的。