英文:
Access DOM with Go and get data
问题
我想从一个URL中访问HTML文档标签,例如,我有以下网页:
https://example.com/
我想要获取h1
标签内的内容,即"Example Domain":
<h1>Example Domain</h1>
同样,对于<p>
标签:
<p> More information...</p>
然后,使用不同标签的值创建一个结构体:
type Example struct {
foo string
bar string
}
Example.foo = *h1标签内容*
Example.bar = *p标签内容*
这种操作是否可行?
英文:
I want to access the HTML document tags from a URL, for example, I have the following webpage:
https://example.com/
I want the inside content from the h1
tag, "Example Domain":
<h1>Example Domain</h1>
Same for the <p>
tag:
<p> More information...</p>
And then create a struct using the values from different tags:
type Example struct {
foo string
bar string
}
Example.foo = *h1 tag content*
Example.bar = *p tag content*
Is this possible?
答案1
得分: 4
我个人会使用goquery来实现这个功能:
// 请求 HTML 页面
res, err := http.Get("https://example.com/")
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
log.Fatalf("状态码错误: %d %s", res.StatusCode, res.Status)
}
// 加载 HTML 文档
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
log.Fatal(err)
}
h1 := doc.Find("h1").First().Text()
p := doc.Find("p").First().Text()
type Example struct {
foo string
bar string
}
e := Example{foo: h1, bar: p}
以上是代码的翻译部分。
英文:
I would personally use goquery for this:
// Request the HTML page.
res, err := http.Get("https://example.com/")
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)
}
// Load the HTML document
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
log.Fatal(err)
}
h1 := doc.Find("h1").First().Text()
p := doc.Find("p").First().Text()
type Example struct {
foo string
bar string
}
e := Example{ foo: h1, bar: p }
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论