如何使用goquery或CSS选择器提取指定div下的所有<p>标签
用goquery和CSS选择器提取所有目标
标签
先看你的示例HTML结构:
<div class="myClass"> <div> <div> <p>1</p> </div> </div> <p>2</p> <div> </div> <p>3</p> </div>
一、纯CSS选择器方案
要提取div.myClass下所有层级的
标签,直接用后代选择器就行:
div.myClass p
这个选择器会匹配该class下所有嵌套层级的
元素,正好覆盖你要的3个标签。
二、结合goquery的代码实现
用goquery的话,核心就是用上面的选择器定位元素,然后遍历提取内容:
package main import ( "fmt" "strings" "github.com/PuerkitoBio/goquery" ) func main() { // 示例HTML内容 htmlContent := ` <div class="myClass"> <div> <div> <p>1</p> </div> </div> <p>2</p> <div> </div> <p>3</p> </div> ` // 加载HTML到goquery文档 doc, err := goquery.NewDocumentFromReader(strings.NewReader(htmlContent)) if err != nil { fmt.Println("加载HTML出错:", err) return } // 用指定选择器找到所有p标签并遍历处理 doc.Find("div.myClass p").Each(func(index int, sel *goquery.Selection) { pText := sel.Text() fmt.Printf("第%d个p标签:%s\n", index+1, pText) }) }
这段代码会输出三个
标签的内容,完全符合需求。
内容的提问来源于stack exchange,提问作者David Meléndez
相关产品推荐
相关产品推荐

