2012-02-27 74 views
1

我一直在Python中练习我的刮屏能力。我已经非常好,但遇到了几个让我非常难过的网站。他们利用Ajax来查找附近的位置。有几个网站以相同的方式设计。其中一个网站是www.applebees.com。即使使用萤火虫,我也找不到答案。用Python刮Ajax

Python如何通过ajax调用请求位置?我完全难倒了。

该页面是www.applebees.com,在右侧有一个表单输入邮政编码,它将拉起距离该邮政编码最近的位置。但是,如果在输入此邮政编码后拉动源,则位置仍不会显示在源文件中。请求/响应完全是ajax,并隐藏到html源代码中,我从来没有见过类似的东西。我正在尝试现在研究解决方案。

+1

Ajax是做HTTP请求的一种流行方式,Python是一种编程语言。唯一正确的答案是“使用你最喜欢的HTTP库”。 – 2012-02-27 00:09:20

+1

你能提供一个更具体的例子吗?例如,Applebee内的特定页面? – 2012-02-27 00:12:33

回答

7

使用http库以编程方式刮取某些网站可能会很困难。如果您试图在JavaScript大型网站(ajax或其他)上模拟用户交互,则可以考虑使用诸如硒之类的东西来驱动真实的浏览器。有python客户端浏览,你会得到一些访问页面的DOM。

http://pypi.python.org/pypi/selenium

+1

我可能会添加一个链接到我自己的库[dryscrape](https://github.com/niklasb/dryscrape),该链接使用QtWebkit使用内存(无头)浏览器实例来刮掉JavaScript大量的网页。这比Selenium和其他人都轻巧和快捷。 – 2012-02-27 00:27:23

+0

即使您提供的建议,我不明白我是如何提取位置名称和地址,即使在手动提交邮政编码后保存的html源文件不存在。我可以看到我的屏幕和萤火虫的信息,但下载源时,它不在那里。 – 2012-02-27 00:59:54

+0

经过研究,更多的硒似乎是唯一的途径。 Niklas也是一种选择。感谢所有的答复 – 2012-02-27 01:30:40