直接上想要达到的效果吧;
替换前内容:
<h1>h1.1</h1><h1>h1.2</h1><div>div1<span>span1</span></div>
希望替换后内容:
<h1>Replace_h1.1</h1><h1>Replace_h1.2</h1><div>Replace_div1<span>Replace_span1</span></div>
目前楼主使用了PuerkitoBio/goquery
可以实现基本功能,但是缺点是会自行补充html
标签,例如:
// 使用 goquery 替换的效果 fmt.Println(doc.Html())
<html><head></head><body><h1>Replace_h1.1</h1><h1>Replace_h1.2</h1><div>Replace_div1<span>Replace_span1</span></div></body></html>
<html><head></head><body>
这些标签是楼主并不想要的?
求大佬们解惑。
有什么办法可以避免这种标签补全呢?或者有其他方案或者其他包可以实现。
1
dreasky 2022-10-19 17:01:26 +08:00
正则表达式不简单吗
|
2
dog82 2022-10-19 17:01:52 +08:00
感觉正则可以实现,跟 go 没关系
|
3
duan602728596 2022-10-19 17:11:10 +08:00 1
我的建议是使用 goquery 替换后,再使用正则把<html><head></head><body>和</body></html>这段去掉
|
4
antxiaoye OP 如果没有一个包可以用的话,我会选择用正则的,但是还是想以最快的方法实现这个功能。
|
5
securityCoding 2022-10-19 20:08:54 +08:00 via Android
楼上的 goquery
|
6
luvroot 2022-10-19 20:16:31 +08:00
"github.com/antchfx/htmlquery"
获取到的 doc 对象进行操作,不像要的可以把 node 找到后删除。 h1 找到后 是个 list 。然后循环的进行替换 for index,nodeH1 :=range. xxx { if nodeH1!=nil { origin :=htmlquery.htmlquery.InnerText //根据某种要求进行替换。然后回写 } } |
7
ysc3839 2022-10-20 06:48:34 +08:00 via Android
不能先取到 body 再 get html 吗?
|
10
Joker123456789 2022-10-20 17:32:20 +08:00
这不就是个 xml 吗?
|
11
antxiaoye OP 我直接用正则吧,貌似没有合适的库。
|
13
youngster 2022-10-21 16:37:02 +08:00
go template 试试?
|