标签: goquery

使用goquery查找其值包含空格的类

回答.用户PuerkitoBio帮我解决了他的goquery包裹,我相信我不会是唯一一个想知道怎么做的人.(我可以在两天内将此问题标记为"已回答")

goquery用于查找html标签的类时,我在类包含空格时遇到了问题.这是一个例子:

package main

import (
    "fmt"
    "github.com/PuerkitoBio/goquery"
    "strings"
)

func main() {
    html_code := strings.NewReader(`
<html>
    <body>
        <h1>
            <span class="text title">Go </span>
        </h1>
        <p>
            <span class="text">totally </span>
            <span class="post">kicks </span>
        </p>
        <p>
            <span class="text">hacks </span>
        </p>
    </body>
<html>
    `)
    doc, _ := goquery.NewDocumentFromReader(html_code)
}
Run Code Online (Sandbox Code Playgroud)

如果我想找到班级"text title",我想我会这样做:

doc.Find(".text title").Each(func(i int, s *goquery.Selection) {
    class, _ := s.Attr("class")
    fmt.Println(class, s.Text())
})
Run Code Online (Sandbox Code Playgroud)

但这不起作用.(答案如下.)

go html-parsing goquery

3
推荐指数
1
解决办法
3539
查看次数

使用 goquery 提取元描述字段

我正在使用goquery包从网页中提取信息片段。请在下面查看我的代码。运行该函数后的结果是:

Description field: text/html; charset=iso-8859-15
Description field: width=device-width
Description field: THIS IS THE TEXT I WANT TO EXTRACT
Run Code Online (Sandbox Code Playgroud)

我快到了,但是我只想获取 name == 'description' 的元字段。不幸的是,我不知道如何将这个额外的条件添加到我的代码中。

func ExampleScrapeDescription() {
    htmlCode :=
        `<!doctype html>
<html lang="NL">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
        <meta name="viewport" content="width=device-width">
        <meta name="description" content="THIS IS THE TEXT I WANT TO EXTRACT">
        <title>page title</title>
    </head>
    <body class="fixedHeader">
        page body
    </body>
</html>`

    doc, err := goquery.NewDocumentFromReader(strings.NewReader((htmlCode)))
    if err != nil {
        log.Fatal(err)
    }

    doc.Find("meta").Each(func(i int, s *goquery.Selection) {
        description, _ := …
Run Code Online (Sandbox Code Playgroud)

meta extract go goquery

3
推荐指数
1
解决办法
2059
查看次数

如何使用golang将HTML表格转换为数组

我在尝试将 HTML 表转换为 Golang 数组时遇到问题。我尝试使用 x/net/html 和 goquery 来实现它,但都没有成功。

假设我们有这个 HTML 表格:

<html>
  <body>
    <table>
      <tr>
        <td>Row 1, Content 1</td>
        <td>Row 1, Content 2</td>
        <td>Row 1, Content 3</td>
        <td>Row 1, Content 4</td>
      </tr>
      <tr>
        <td>Row 2, Content 1</td>
        <td>Row 2, Content 2</td>
        <td>Row 2, Content 3</td>
        <td>Row 2, Content 4</td>
      </tr>
    </table>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想以这个数组结束:

------------------------------------
|Row 1, Content 1| Row 1, Content 2|
------------------------------------
|Row 2, Content 1| Row 2, Content 2|
------------------------------------
Run Code Online (Sandbox Code Playgroud)

正如你们所看到的,我只是忽略了内容 3 和 4。

我的提取代码:

func …
Run Code Online (Sandbox Code Playgroud)

html go goquery

3
推荐指数
1
解决办法
5925
查看次数

如何在http请求后获得响应

我正在学习Go,在这个领域是一个真正的新手.

当我尝试复制某些值时,我遇到了问题.

我在做的是:

  1. 我想在[response]中使用httpRequest获得一些响应.
httpClient := &http.Client{}
response, err := httpClient.Do(req)
if err != nil {
   panic(err)
}
Run Code Online (Sandbox Code Playgroud)
  1. 之后,我想在'origin.txt'的响应中保存存储的值
origin_ ,_:= ioutil.ReadAll(response.Body)
f_, err := os.Create("origin.txt")
f_.Write(origin_);
Run Code Online (Sandbox Code Playgroud)
  1. 我想通过使用goquery包获得一个特定的值.
doc, err := goquery.NewDocumentFromReader(response.Body)
if err != nil {
    log.Fatal(err)
}
doc.Find(".className").Each(func(i int, s *goquery.Selection) {
    w.WriteString("============" + strconv.Itoa(i) + "============")
    s.Find("tr").Each(func(i int, s_ *goquery.Selection) {
    fmt.Println(s_.Text())
    w.WriteString(s_.Text())    
    })
}
Run Code Online (Sandbox Code Playgroud)

)

但在这种情况下,我可以从2)得到一个我想要的值,但不能从3)得到任何东西.

首先,我认为问题是,3)的响应对象受2)动作的影响.因为它是一个参考对象.

所以我试着把它复制到另一个对象,然后再做一次.

origin := *response
Run Code Online (Sandbox Code Playgroud)

但是,我得到了与第一个相同的结果.

我该怎么办?如何通过其值将参考值分配给另一个?

我应该每次尝试两次吗?

go goquery

3
推荐指数
1
解决办法
67
查看次数

如何使用 goquery 获取 DOM 的类型名称?

我想使用 goquery 获取 DOM 的类型名称,如“a”、“img”、“tr”、“td”、“center”。我怎样才能得到?

package main

import (
    "github.com/PuerkitoBio/goquery"
)

func main() {
    doc, _ := goquery.NewDocument("https://news.ycombinator.com/")
    doc.Find("html body").Each(func(_ int, s *goquery.Selection) {
        // for debug.
        println(s.Size()) // return 1

        // I expect '<center>' on this URL, but I can't get it's name.
        // println(s.First().xxx) // ?
    })
}
Run Code Online (Sandbox Code Playgroud)

dom go goquery

2
推荐指数
1
解决办法
1857
查看次数

使用 goQuery 按 ID 搜索标签

我想使用 Go 检索具有特定 id 的所有标签。显然,最简单的方法就是使用 goquery。

假设我正在网站中寻找ul带有 id 的标签。我想列出这样一个 .txt 文件中包含的所有内容。我以前从未使用过 jQuery,所以我感觉有点失落。MyTagsiteliul

resp, _ := http.Get(site)
httpBody := resp.Body
node, _ := html.Parse(httpBody)
document := goquery.NewDocumentFromNode(node)
document.Find("ul.MyTag").Each(func(i int, ul *goquery.Selection) { //MyTag will not work here
    ul.Find("li").Each(func (i int, li *goquery.Selection){
        ...
   })
})
Run Code Online (Sandbox Code Playgroud)

更具体地说,我的 html 看起来像

<html>
    <body>
        <ui id="yes">
            <li key="1">a</li>
            <li key="2">b</li>
            <li key="3">c</li>
            <li key="4">d</li>
        </ui>

        <ui id="no">
            <li key="1">11</li>
            <li key="2">22</li>
            <li key="3">33</li>
            <li key="4">44</li>
        </ui>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想取回钥匙 …

html go goquery

1
推荐指数
1
解决办法
4900
查看次数

Goquery 选择元[property=og:image]?

Goquery 在 语法方面,它尽可能接近 jQuery,尽可能使用相同的函数名称,以及温暖而模糊的可链接界面。

doc.Find("meta[property='og:image']").Each(func(i int, s *goquery.Selection) {
    fmt.Fprintln("og data=", s)
})
Run Code Online (Sandbox Code Playgroud)

显然不够接近那个j-thing

如何从 goquery 获取网页中的 og 数据?

go goquery

1
推荐指数
1
解决办法
1281
查看次数

标签 统计

go ×7

goquery ×7

html ×2

dom ×1

extract ×1

html-parsing ×1

meta ×1