【发布时间】:2012-08-31 16:09:03
【问题描述】:
首先,让我承认我是 Ruby 的新手。我只用了几天,但取得了相当大的成功。我已经能够解析在多个 HTML 文件中单独存在的某些项目并导出为 CSV;但是,我一直在解析多个 HTML 文件上的整个数据表。我能够提取比我需要的更多的内容,但生成的 CSV 导出将每个 HTML 文件的所有数据作为一个数组包含在 CSV 的单个单元格中。
这是我正在查看的数据的简化版本(每页重复大约 20-30 行):
<tbody id="threadbits_forum_406">
<tr>
<td class="alt1" id="td_threadstatusicon_######"> IMG </td>
<td class="alt2" align="center" valign="middle">
<a href="http://I.NEED.THIS">
<div style="height:75px; width:150px; overflow:hidden; background:url(http://I.NEED.THIS/TOO) center 25%;"> </div>
</a>
</td>
<td class="alt1" id="td_threadtitle_######" title="blah">[...]</td>
<td class="alt2" title="blah"> <div class="smallfont" style="text-align:right; white-space:nowrap"> <a href="dontcare"> </a> </div> </td>
<td class="alt1" align="center">[...]</td>
<td class="alt2" align="center">[...]</td>
</tr>
由于列的类被使用了几次,我无法理解使用什么 CSS 或 XPATH 技巧来提取 DIV 中的背景图片以及仅在第二列上的 HREF 链接。 DIV 没有其他列中使用的类。
如果有人能给我一点指导,我将不胜感激!
【问题讨论】:
-
好吧,我可以通过以下方式获取数据:
thread = doc.css('tbody#threadbits_forum_406 tr td.alt2 a').map { |link| link['href'] } thumb = doc.css('tbody#threadbits_forum_406 tr td.alt2 a div') @thread << thread @thumb << thumb但每个页面的输出都在 CSV 的单个单元格中。我必须遗漏一些东西才能将其分成单独的行...... -
请编辑您的问题并添加您的 Ruby 代码,以便人们了解您的出发点,以便他们更轻松地为您提供帮助。
标签: html ruby csv html-parsing nokogiri