Html Agility Pack循环表 - 将上面的节点添加为表中的td,直到下一个标记

时间:2017-07-12 16:15:57

标签: javascript html selenium-webdriver html-agility-pack

我正在尝试遍历表,但位置信息用作分组。如何在每个表上使用位置信息,直到下一次更改为止?有点卡在这里。也许在每个表上添加h4文本作为td可以解决问题,但我无法做到这一点。我正在使用selenium web driver。

因此每个h4内部文本都将用作表格下的位置信息。

示例代码:

<div>
<h4>location1</h4>
<table>
    <colgroup>
        <col class="colwidth3">
        <col class="colwidth3">
        <col class="colwidth4">
        <col class="colwidth4">
        <col class="colwidth4">
    </colgroup>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td>16 May 2017</td>
            <td>fdfds</td>
            <td></td>
        </tr>
    </tbody>
</table>
<h4>location2</h4>
<table>
    <colgroup>
        <col class="colwidth3">
        <col class="colwidth3">
        <col class="colwidth4">
        <col class="colwidth4">
        <col class="colwidth4">
    </colgroup>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td>21 May 2017</td>
            <td>ghghhgh</td>
            <td></td>
        </tr>
    </tbody>
</table>
<table>
    <colgroup>
        <col class="colwidth3">
        <col class="colwidth3">
        <col class="colwidth4">
        <col class="colwidth4">
        <col class="colwidth4">
    </colgroup>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td>25 May 2017</td>
            <td>hgfhfghfgh</td>
            <td></td>
        </tr>
    </tbody>
</table>
<h4>location3</h4>
<table>
    <colgroup>
        <col class="colwidth3">
        <col class="colwidth3">
        <col class="colwidth4">
        <col class="colwidth4">
        <col class="colwidth4">
    </colgroup>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td>29 May 2017</td>
            <td>ghhfhgfhfg</td>
            <td></td>
        </tr>
    </tbody>
</table>
<table>
    <colgroup>
        <col class="colwidth3">
        <col class="colwidth3">
        <col class="colwidth4">
        <col class="colwidth4">
        <col class="colwidth4">
    </colgroup>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td>03 Jun 2017</td>
            <td>hjhjhj</td>
            <td></td>
        </tr>
    </tbody>
</table>
<h4>location4</h4>
<table>
    <colgroup>
        <col class="colwidth3">
        <col class="colwidth3">
        <col class="colwidth4">
        <col class="colwidth4">
        <col class="colwidth4">
    </colgroup>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td>2 Jul 2017</td>
            <td>jujujuj</td>
            <td></td>
        </tr>
    </tbody>
</table>

2 个答案:

答案 0 :(得分:1)

如果您可以将h4 +表格包装成div,则可以通过以下方式将所有内容打包到列表中:

sed '1,/firstmatch/d;/secondmatch/,$d'

迭代:

var elements = document.querySelectorAll('your_selector');

但是这个解决方案有点懒散

答案 1 :(得分:0)

我提出了js解决方案

 function test() {
                var loc = "";
                $('div').children().each(function () {
                    var type = $(this).prop('tagName');
                    if (type == "H4")
                    {
                        loc = $(this).text();
                    }
                    else if (type=="TABLE")
                    {
                        $(this).find('td').eq(0).before('<td>' + loc + '</td>');
                    }
                });
            }