使用Go访问DOM并获取数据

huangapple go评论95阅读模式
英文:

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":

&lt;h1&gt;Example Domain&lt;/h1&gt;

Same for the &lt;p&gt; tag:

&lt;p&gt; More information...&lt;/p&gt;

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(&quot;https://example.com/&quot;)
if err != nil {
    log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
    log.Fatalf(&quot;status code error: %d %s&quot;, res.StatusCode, res.Status)
}

// Load the HTML document
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
    log.Fatal(err)
}

h1 := doc.Find(&quot;h1&quot;).First().Text()
p := doc.Find(&quot;p&quot;).First().Text()

type Example struct {
    foo string
    bar string
}

e := Example{ foo: h1, bar: p }

huangapple
  • 本文由 发表于 2022年7月23日 04:12:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/73085653.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定