我正在尝试抓取一个页面,但初始响应在正文中没有任何内容,因为内容是异步输入的,例如苹果网站上的搜索结果:http: //www.apple.com/uk/search/ ?q=搜索+for+something&sec=global
关于如何使用 hpricot 成功获取搜索结果的任何想法?
谢谢。
我正在尝试抓取一个页面,但初始响应在正文中没有任何内容,因为内容是异步输入的,例如苹果网站上的搜索结果:http: //www.apple.com/uk/search/ ?q=搜索+for+something&sec=global
关于如何使用 hpricot 成功获取搜索结果的任何想法?
谢谢。
当您引用的搜索页面被加载时,它会通过 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 可能会更好。