我正在尝试抓一页,但是初始响应在身体中没有任何内容,因为内容是异步输入的,例如,在苹果网站上搜索的结果:http://www.apple.com/uk/search/?q=searching+for+something&sec=global
关于如何使用hpricot成功获取搜索结果的任何想法?
感谢。
答案 0 :(得分:2)
当您加入的搜索页面被加载时,它会通过javascript / ajax向其他位置发出请求,然后填充搜索结果。这就是您在页面中看到的内容。 Hpricot本身无法帮助你,因为它无法解释页面附带的javascript以获取实际的搜索结果列表。
现在,如果你感兴趣的是搜索结果,你需要分析一下当你进入那个页面并输入一个搜索查询时会发生什么。页面中的一些javascript接受您的查询,并在Apple的服务器中调用(通过XMLHttpRequest或类似的,AJAX技术)一些其他脚本。这是实际在数据库中进行搜索并返回结果的那个。
我建议您使用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。