帮助屏幕抓取/解析

问题描述 投票:0回答:3

我一直在尝试从hostels.com抓取并最终解析一些数据(特别是可用性和价格),例如http://www.hostels.com/hosteldetails.php/HostelNumber.11890。问题是,一旦您选择了住宿天数并选择“立即预订”,URL 字符串就不会传递任何内容(我相信这一切都是通过 Ajax 完成的),我无法直接转到特定的日期或时间范围。

我尝试过浏览器模拟器,例如 Selenium、IRobotSoft 和 FakeApp,尽管我确实让 Selenium 和 Fake 完成了捕获完整源代码的大部分工作,但在必须抓取(并使用其他软件解析)多个时,它很丑陋,而且仍然很乏味。每天页数。

我还尝试过 HTML DOM 解析器、PHP 脚本化 Web 浏览器、HTMLUnit、cScrape.php、Crowbar。要么他们无法对付阿贾克斯,要么我连他们都跑不了。

理想情况下,我想要一些可以从服务器运行的东西,并且依赖项尽可能少,但此时我只想让它运行。

现在,在花了很多时间试图让它工作之后。我仍然觉得不知道从哪里开始。有人可以指出我正确的方向吗?我应该回去花更多时间使用 HTMLUnit 吗?对于这样的网站,最佳做法是什么?

谢谢

javascript html ajax parsing web-scraping
3个回答
2
投票

我真的很喜欢 Node.js atm(服务器端 JavaScript,以防你不熟悉),所以这就是我推荐的。使用它来抓取网站的最棒之处在于,您可以使用 jQuery 或任何您最喜欢的 JS 框架来完成解析您想要的信息的所有工作!请参阅以下资源以开始使用:

http://blog.dtrejo.com/scraping-made-easy-with-jquery-and-selectorga

https://github.com/tmpvar/jsdom

https://github.com/chriso/node.io/wiki/Scraping

https://github.com/joshfire/node-crawler


2
投票

您所指的页面似乎没有使用AJAX。相反,您所指的 AJAX 是 POST 请求(与 url 中传递的内容相反,后者是 GET 请求)。我建议您阅读它们之间的区别。尝试了解发生了什么,这比依赖某些可能非常不灵活的第三方工具更重要。

安装 Firebug 并观察 POST 请求中发送了哪些变量。 现在用您最喜欢的编程语言做同样的事情。解析 POST 请求的响应 HTML 以获取必要的信息。

此外,+1 感谢尝试多种不同解决方案并且不放弃的努力。


1
投票

我发现 Celerity (http://celerity.rubyforge.org),一个在底层使用 HTMLUnit 的 JRuby 库,是“通过 Web 获取数据”的非常强大的解决方案。

我发现,与成熟的 Java (HTMLUnit) 相比,Ruby 的 Celerity 开发速度要快得多。另外,由于 Celerity 对 HTMLUnit 的“包装”——我能够下降到 HTMLUnit,因为我需要做一些更重的工作。

我在富含 DHTML 以及利用 Ajax 的网站上取得了成功;虽然我使用了一些 sleep() 调用来等待 Ajax 响应 - 一切都按预期工作。

尝试一下!

© www.soinside.com 2019 - 2024. All rights reserved.