猿问

goquery- 将一个标签与后面的标签连接起来

对于一些背景信息,我是 Go 的新手(3 或 4 天),但我开始习惯了。


我正在尝试用于goquery解析网页。(最终我想将一些数据放入数据库中)。对于我的问题,一个例子将是解释它的最简单方法:


<html>

    <body>

        <h1>

            <span class="text">Go </span>

        </h1>

        <p>

            <span class="text">totally </span>

            <span class="post">kicks </span>

        </p>

        <p>

            <span class="text">hacks </span>

            <span class="post">its </span>

        </p>

        <h1>

            <span class="text">debugger </span>

        </h1>

        <p>

            <span class="text">should </span>

            <span class="post">be </span>

        </p>

        <p>

            <span class="text">called </span>

            <span class="post">ogle </span>

        </p>

        <h3>

            <span class="statement">true</span>

        </h3>

    </body>

<html>

我想:


提取内容<h1..."text"。

将此提取的内容插入(并连接)到<p..."text".

仅对紧跟在标签之后的<p>标签执行此操作。<h1>

这样做对所有的的<h1>页面上的标签。

所以这就是我想要的样子:


<html>

    <body>

        <p>

            <span class="text">Go totally </span>

            <span class="post">kicks </span>

        </p>

        <p>

            <span class="text">hacks </span>

            <span class="post">its </span>

        </p>

        <p>

            <span class="text">debugger should </span>

            <span class="post">be </span>

        </p>

        <p>

            <span class="text">called </span>

            <span class="post">ogle</span>

        </p>

        <h3>

            <span class="statement">true</span>

        </h3>

    </body>

<html>


我知道我可以阅读<h1..."text":


h3_tag := doc.Find("h3 .text")

我也知道,我可以添加的内容<h1..."text",以内容<p..."text"与此:


doc.Find("p .text").Before("h3 .text")

^但这命令插入从内容的每一个的情况下,<h1..."text"之前的每一个的情况下<p..."text"。


然后,我发现了如何更接近我想要的:


doc.Find("p .text").First().Before("h3 .text")

^此命令仅在第一个case of (这更接近我想要的)之前插入来自每个单个case of的内容。<h1..."text" <p..."text"


我也尝试过使用goquery'sEach()函数,但是我无法通过该方法更接近我想要的东西(尽管我确定有一种方法可以使用Each(),对吗?)


我最大的问题是我无法弄清楚如何将每个实例<h1..."text"与<p..."text"紧随其后的实例相关联。


如果有帮助,<h1..."text"是永远其次<p..."text"在网页上,我试图解析。


我的脑子没水了。有没有围棋天才知道如何做到这一点并愿意解释它?提前致谢。


鸿蒙传说
浏览 146回答 1
1回答

慕后森

我不知道你在用 goquery 写什么代码。但也许,您期望的是邻居选择器。h1+p这将返回在邻居中有 p 标签的 h1 标签。
随时随地看视频慕课网APP

相关分类

Go
我要回答