- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
关于一些背景信息,我是 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>
代码是这样开始的,
package main
import (
"fmt"
"strings"
"github.com/PuerkitoBio/goquery"
)
func main() {
html_code := strings.NewReader(`code_example_above`)
doc, _ := goquery.NewDocumentFromReader(html_code)
我知道我可以阅读 <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")
^此命令插入 <h1..."text"
的每个 案例中的内容仅在<p..."text"
的第一个案例之前(这更接近我想要的)。
我也试过使用 goquery
的 Each()
功能,但我无法通过该方法更接近我想要的(尽管我确定有一种方法可以使用 Each()
来实现,对吧?)
我最大的问题是我不知道如何关联 <h1..."text"
的每个实例与 <p..."text"
紧随其后的实例。
如果有帮助,<h1..."text"
总是 后跟 <p..."text"
在我尝试解析的网页上。
我的脑子没电了。有围棋天才知道怎么做并且愿意解释一下吗?提前致谢。
我发现了我可以做的其他事情:
doc.Find("h1").Each(func(i int, s *goquery.Selection) {
nex := s.Next().Text()
fmt.Println(s.Text(), nex, "\n\n")
})
^这打印出了我想要的——<h1..."text"
的每个实例的内容紧随其后的是 <p..."text"
的直接实例.我以为s.Next()
将输出 <h1>
的下一个实例, 但它输出 doc
中的下一个标签--*goquery.Selection
它正在迭代。对吗?
或者,作为 mattn
指出,我也可以使用 doc.Find("h1+p")
.
我仍然无法附加 <h1..."text"
至 <p..."text"
.我会将其作为另一个问题发布,因为您可以将其分解为多个问题,并且 Mattn
已经回答了一个。
最佳答案
不知道你在用goquery写什么代码。但也许,您期望的是邻居选择器。
h1+p
这会返回 h1 标签,它在邻居中有 p 标签。
关于goquery- 将标签与后面的标签连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27789446/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!