【发布时间】:2014-01-06 22:22:02
【问题描述】:
我想从 CarFax 报告的特定 div 中抓取数据。但是,当我搜索 div 时,我总是得到这个奇怪的垃圾输出。
我尝试了search(#divId)、search(.divClass),甚至尝试使用search('div') 抓取所有div。每次我得到类似的结果:div的内容被部分截断,标签都乱七八糟。
这是我正在加载到我的agent 中的 URL:https://gist.github.com/atkolkma/8024287
这是代码(用户和密码省略):
require "rubygems"
require "mechanize"
scraper = Mechanize.new
scraper.user_agent_alias = 'Mac Safari'
scraper.follow_meta_refresh = true
scraper.redirect_ok = true
scraper.get("http://www.carfaxonline.com")
form = scraper.page.forms.first
form.j_username = "******"
form.j_password = "*****"
scraper.submit(form)
scraper.get("http://www.carfaxonline.com/api/report?vin=1G1AT58H697144202&track=true")
puts scraper.page.search("#headerBodyType")
这是我运行文件时返回的内容:
</div>4 DRderBodyType">
我的期望是:
<div id="headerBodyType"> SEDAN 4 DR </div>
最奇怪的是,如果我复制 HTML 源代码,将其另存为新文件,上传并search 它,我会得到正确的输出!我已将复制的 HTML 上传到我的 chevy-pics dot com 域并运行以下代码:
scraper2 = Mechanize.new
scraper2.get("http://www.chevy-pics.com/test.html")
puts scraper2.page.search("#headerBodyType")
正如预期的那样,我得到了这个作为输出:
<div id="headerBodyType"> SEDAN 4 DR </div>
【问题讨论】:
-
示例代码会有很大帮助。
-
首先,Nokogiri 只会做你告诉它做的事情,除非你偶然发现了一个错误,这是极不可能的。其次,没有您的代码,我们无法帮助您。 “有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包括有效的代码来重现它。有关指导,请参阅SSCCE.org。”将您正在解析的 HTML 剥离到重现问题所需的最低限度。
-
感谢您的意见,伙计们。我已经更新了问题。