使用 hpricot 解析 3 个表列

发布于 2024-12-13 16:10:30 字数 1915 浏览 1 评论 0原文

我得到了一个 HTML 文档,其中包含非常简单的表格,如下所示

<table>
<tr><th>Country</th><th>Date</th></tr>

<tr>
    <td><b><a href="/calendar/?region=BE">Belgium</a></b></td>
    <td align="right"><a href="/date/04-20/">20 April</a> <a href="/year/2001/">2001</a></td>
    <td>(original release)</td>
</tr>

<tr>
    <td><b><a href="/calendar/?region=BE">Belgium</a></b></td>
    <td align="right"><a href="/date/04-25/">25 April</a> <a href="/year/2001/">2001</a></td>
    <td></td>
</tr>

<tr>
    <td><b><a href="/calendar/?region=FR">France</a></b></td>
    <td align="right"><a href="/date/04-27/">27 April</a> <a href="/year/2001/">2001</a></td>
    <td></td>
</tr>

<tr>
    <td><b><a href="/calendar/?region=CH">Switzerland</a></b></td>
    <td align="right"><a href="/date/05-25/">25 May</a> <a href="/year/2001/">2001</a></td>
    <td>(French speaking region)</td>
</tr>

<tr>
    <td><b><a href="/calendar/?region=CZ">Czech Republic</a></b></td>
    <td align="right"><a href="/date/07-06/">6 July</a> <a href="/year/2001/">2001</a></td>
    <td>(International Film Festival)</td>
</tr>
</table>

前两列很容易解析:

document.search("a[@href*=calendar]").each { |country| countries << country.inner_text }
document.search("td[@align*=right]").each { |date| dates << date.inner_text }

但是我在从第三列查找值时遇到了麻烦。我需要将它们全部排列起来,包括空白的。我该怎么做?

I got an HTML document with pretty simple table like this

<table>
<tr><th>Country</th><th>Date</th></tr>

<tr>
    <td><b><a href="/calendar/?region=BE">Belgium</a></b></td>
    <td align="right"><a href="/date/04-20/">20 April</a> <a href="/year/2001/">2001</a></td>
    <td>(original release)</td>
</tr>

<tr>
    <td><b><a href="/calendar/?region=BE">Belgium</a></b></td>
    <td align="right"><a href="/date/04-25/">25 April</a> <a href="/year/2001/">2001</a></td>
    <td></td>
</tr>

<tr>
    <td><b><a href="/calendar/?region=FR">France</a></b></td>
    <td align="right"><a href="/date/04-27/">27 April</a> <a href="/year/2001/">2001</a></td>
    <td></td>
</tr>

<tr>
    <td><b><a href="/calendar/?region=CH">Switzerland</a></b></td>
    <td align="right"><a href="/date/05-25/">25 May</a> <a href="/year/2001/">2001</a></td>
    <td>(French speaking region)</td>
</tr>

<tr>
    <td><b><a href="/calendar/?region=CZ">Czech Republic</a></b></td>
    <td align="right"><a href="/date/07-06/">6 July</a> <a href="/year/2001/">2001</a></td>
    <td>(International Film Festival)</td>
</tr>
</table>

First two columns are easy to parse:

document.search("a[@href*=calendar]").each { |country| countries << country.inner_text }
document.search("td[@align*=right]").each { |date| dates << date.inner_text }

But I have troubles looking up values from 3rd column. I need all of them in array, including the blank ones. How can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦言归人 2024-12-20 16:10:30

回答我自己的问题:

document.search("td[@align*=right]").each { |comment| comments << comment.next.next.inner_text }

Answering my own question:

document.search("td[@align*=right]").each { |comment| comments << comment.next.next.inner_text }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文