我希望将内容写入来自构造不良的源站点的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]来应用方法?我捕获元素错了吗?然后我使用两个“next_element”调用在我选择之后抓取<p>
元素两个元素。我写了这篇文章但是在我选择之后我似乎无法遍历第n级!最后,我想要的<p>
元素和所有内容都被捕获了! YAY Mini胜利!
输出非常难看(更不用说我的一个内容非常难看)而且我不确定将<p>
内容“分解”为可以输出到csv的数组的最佳方法。
我很想把它写成一个文件,并使用linux终端来清理它...这将是作弊和退出!
任何方向都会受到高度赞赏。
答案 0 :(得分:2)
你可以通过以下方式获得:
p = page.at('h2.lead + br + p')
要分解内容,也许这样做很好:
p.children.map &:text