使用 Hpricot 抓取具有异步响应的页面

发布于 2024-09-06 15:24:39 字数 295 浏览 8 评论 0 原文

我正在尝试抓取页面,但初始响应正文中没有任何内容,因为内容是异步输入的,例如苹果网站上的搜索结果: http://www.apple.com/uk/search/?q=searching+for+something&sec= global

关于如何使用 hpricot 成功获取搜索结果有什么想法吗?

谢谢。

I'm trying to scrape a page but the initial response has nothing in the body as the content is pumped in asynchronously, e.g. the results from a search on the apple website: http://www.apple.com/uk/search/?q=searching+for+something&sec=global

Any ideas on how I can successfully grab the results from the search with hpricot?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

_失温 2024-09-13 15:24:39

当您引用的搜索页面加载时,它会通过 javascript/ajax 向其他位置发出请求,然后填充搜索结果。这就是您在页面中看到的内容。 Hpricot 本身无法帮助您,因为它无法解释页面附带的 JavaScript 来获取实际的搜索结果列表。

现在,如果您感兴趣的是搜索结果,则需要分析一下进入该页面并输入搜索查询时会发生什么。页面中的一些 javascript 接受您的查询,并调用(通过 XMLHttpRequest 或类似的 AJAX 技术)Apple 服务器中的一些其他脚本。它实际上在数据库中进行搜索并返回结果。

我建议您使用 Firebug 插件安装 Firefox,或者使用其他方式查看页面及其 javascript 组件发送和/或接收的实际请求。您会看到,对于您引用的搜索页面,它获取两部分:首先,来自此 URL 的“精选”结果:

http://www.apple.com/global/scripts/search_featured.php?q=mac+mini§ion =global&geo=uk

请注意,搜索字符串位于“q”参数中。

其次,一长串结果列表来自这里:

http://www.apple.com/search/service/nph-search10?site=uk_www&filter=1&snum=50&q=mac+mini

这两个都是XML 文档;使用 Hpricot 解析这些 URL 可能会有更好的运气。

When the search page you refer to is loaded, it makes a request via javascript/ajax to some other location, then populates the search results. This is what you're seeing in the page. Hpricot itself can't help you here because it has no way to interpret the javascript that comes with the page in order to fetch the actual search results list.

Now, if what you're interested in are the search results, you'd need to analyze a bit what happens when you enter that page and type a search query. Some javascript in the page takes your query, and calls (via XMLHttpRequest or similar, AJAX techniques) some other script in Apple's server. This is the one that actually does the search in a database and returns the result.

I suggest you install Firefox with the Firebug plugin, or some other way of seeing the actual requests a page and its javascript components send and / or receive. You'll see that, for the search page you referred, it fetches two parts: First, the "featured" results that come from this URL:

http://www.apple.com/global/scripts/search_featured.php?q=mac+mini§ion=global&geo=uk

Notice the search string is in the "q" parameter.

Second, a long results list comes from here:

http://www.apple.com/search/service/nph-search10?site=uk_www&filter=1&snum=50&q=mac+mini

These both are XML documents; you might have better luck parsing these URLs with Hpricot.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文