使用 Python 抓取 Web 应用程序

Posted

技术标签:

【中文标题】使用 Python 抓取 Web 应用程序【英文标题】:Scraping Web Applications with Python 【发布时间】:2015-04-09 13:28:30 【问题描述】:

到目前为止,我在网络抓取方面的大部分经验都相当简单易懂。发送请求,下载 html,然后提取所需信息。目前,我有兴趣从 Spotify Web 应用程序中抓取热门播放数据。这些数据无法通过他们的 API 访问,但在浏览不同的艺术家页面时可以看到。

例如,可以在此链接中找到 The National 的热门曲目:https://play.spotify.com/artist/2cCUtGK9sDU2EoElnk0GNB

我的问题是,这些数据是如何在幕后生成的,是否可以抓取这些数据?

【问题讨论】:

【参考方案1】:

数据是动态生成的(下载 HTML 不会成功),前端使用 FLEX,后端使用 C++/Python(根据 this)。 无论如何,如果你需要抓取 javascript 生成的内容,这将是一件很困难的事情,而且比抓取静态网站要复杂得多。

我建议您使用 PhantomJS(可使用 JS API 编写脚本的无头 WebKit)或 Selenium(自动浏览器测试/抓取)。

【讨论】:

目前正在使用 Firebug 检查页面,并且在任何 HTML 标记中都找不到我要查找的数据。大多数动态生成的网站仍然允许人们看到标签之间的内容,而且这个网站上什么都没有显示似乎很奇怪。 尝试使用“选择要检查的元素”工具来查找 HTML 标记。

以上是关于使用 Python 抓取 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Python中的urlparseurllib抓取和解析网页

Python和web初学

用于大容量 Web 抓取的 Python 线程与 Gevent

从web抓取信息

Python中的HTMLParsercookielib抓取和解析网页从HTML文档中提取链接图像文本Cookies

Python - 使用HTML标记进行Web抓取