0

我希望将内容从构造不佳的源站点写入 csv 行。我的 csv 行很简单:

COMPANY_NAME,WEBSITE,EMAIL,TEL1,TEL2,FAX,STREET,CITY,STATE,ZIP,COUNTRY

不幸的是,源没有干净的 ID 和类可供搜索。在一堆“对我来说没用”的元素之间,是我需要的所有东西都捆绑在一个<p>元素中,如下所示:

<h2 class="lead">Contact Details</h2>
<br>
<p><!--what I want is in here -->
  <strong>COMPANY_NAME/strong> <br>
  STREET<br>
  CITY, STATE ZIP<br>
  COUNTRY<br>
  Tel: +1 555 555 5555<br>
  Tel: +1 555 555 5555<br>
  Fax: +1 555 555 5555<br>
  Email: <a href="mailto:EMAIL_ADDRESS</a><br>  
  URL: <a target="_blank" rel="nofollow" href="http://www.COMPANY_WEB_ADDRESS.com">
  www.COMPANY_WEB_ADDRESS.com</a><br>                 
</p>

所以,我当前的代码(我相信你会大笑的)是这样的:

page = Nokogiri::HTML(open('http://www.SOURCE/'))
page.css('h2.lead')[0].next_element.next_element

这条丑陋的线找到了第一次出现的具有类领先的页面 h2 元素。我必须明确使用 [0] 来应用方法?我是否错误地捕获了元素?然后我<p>在选择后使用两个“next_element”调用来抓取元素两个元素。我畏缩写这个,但在我选择之后我似乎无法穿越第 n 级!最后,<p>我想要的元素和它的所有内容都被捕获了!YAY 迷你胜利!

输出非常难看(更不用说我的一个班轮非常难看),我不确定将<p>内容“分解”成可以输出到 csv 的数组的最佳方法。

我很想按原样将其写入文件并使用 linux 终端将其全部清理...那将是作弊和退出!

任何方向将不胜感激。

4

1 回答 1

2

您可以通过以下方式获得 p:

p = page.at('h2.lead + br + p')

要分解内容,也许这样做就足够了:

p.children.map &:text
于 2013-06-07T00:44:22.853 回答