首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hpricot解析的帮助

Hpricot解析的帮助
EN

Stack Overflow用户
提问于 2011-09-12 13:30:57
回答 2查看 61关注 0票数 0

我正在尝试使用Hpricot解析亚马逊mobile.website,但我发现我从浏览器(IE、FF、Chrome和opera)获得的源代码与Hpricot解析的源代码不同

例如:http://www.amazon.com/gp/aw/d/0534243126

我正在试着提取折扣后的价格。通过查看任何浏览器的源代码,这是一项非常简单的工作: doc.at("span@class='dpOurPrice'").inner_text

然而,结果是open-uri/hpricot得到了一个完全不同的源代码,价格上也没有html标签。有人能告诉我这是怎么回事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-12 13:36:46

亚马逊移动网站服务器可能会使用user agent字符串来确定要返回的内容类型,而ruby的用户代理并不是服务器所期望的。使用以下命令设置:

open("http://xxx.com", 'User-Agent'=>'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2') { |f| Hpricot(f) }

与浏览器相同,以便服务器向浏览器返回与其相同的源。

票数 0
EN

Stack Overflow用户

发布于 2011-09-12 13:38:30

您可能会得到一个不同的页面,因为您没有随同请求一起传递User-Agent HTTP头。试着传递一个,看看这是否会改变你得到的东西。(提示:“窃取”Chrome的)

接下来,我将不再使用Hpricot,因为它不需要维护,并且已被Nokogiri取代。例如,在Nokogiri中,你可以使用doc.css("span.dpOurPrice")找到这个元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7383653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档