亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何正確使用選擇器

如何正確使用選擇器

Go
汪汪一只貓 2022-07-11 16:44:02
我正在編寫一個爬蟲來從某些頁面中檢索一些數據,如何構建它的邏輯對我來說非常清楚,但我對如何正確使用選擇器感到非常困惑。我想使用 colly 獲取一些新聞的標題,我轉到頁面https://g1.globo.com/economia并檢查了我要提取信息的標題 -> 單擊檢查 -> 復制選擇器。選擇器是正文 > div.glb-grid > main > div.row.content-head.non-featured > div.title > h1我怎樣才能把它正確地放在這行代碼中?detailCollector.OnHTML("body >  div.glb-grid > main > div.row.content-head.non-featured > div.title > h1", func(element *colly.HTMLElement) {    fmt.Println(element.Text)})如何以 colly 可以理解的方式解析這個選擇器的正確方法?我在 colly 文檔中找不到與此相關的任何內容。
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

選擇器并非特定于 colly。它使用goquery的 Find 功能:


doc.Find(cc.Selector).Each(func(_ int, s *goquery.Selection)

但是您提供的示例代表了 CSS 選擇器。因此,您可以在此處找到標準中的最終參考:https ://www.w3.org/TR/selectors-3/#selectors


但是該特定網頁似乎不包含您在上面尋找的選擇器。


您提供的示例非常具體,這可能就是它不匹配任何內容的原因。將其分解為:


body >  div.glb-grid > main > div.row.content-head.non-featured > div.title > h1

找到一個“h1”元素,它是一個 div 元素的子元素,其 classlist 包含 title,它本身是 div 元素的子元素,其 classlist 包含所有“row”、“content-head”、“non -featured”,它是 main 的子元素,它是 div 元素的子元素,其類列表包含作為 body 元素的子元素的“glb-grid”。


將此與更簡單但更通用的選擇器“h1”進行對比,后者僅產生網頁標題,因為它似乎是文檔中唯一的“h1”元素,這可能會解釋您的困惑。


<h1 class="header-title"> 

<div class="header-title-content">

<a class="header-editoria--link" href="https://g1.globo.com/economia/">Economia</a>

</div>

</h1>

除此之外,頁面使用 Javascript 調整 DOM,并且您對頁面上實際存在的內容有些移動目標。


但是,這并不全是壞消息,因為我懷疑您正在尋找的物品可能只需要:-


package main


import (

    "fmt"


    "github.com/gocolly/colly"

)


func main() {

    headlines := make(map[string]string)

    c := colly.NewCollector()

    c.OnHTML(".feed-post-link", func(e *colly.HTMLElement) {

        headlines[e.Text] = e.Attr("href")

    })


    c.Visit("https://g1.globo.com/economia")

    for hl, url := range headlines {

        fmt.Printf("'%v' - (%v)\n", hl, url)

    }

}

這使用了一個簡單的選擇器,它選擇所有具有“feed-post-link”類的 HTML 元素,這似乎包括該頁面的所有標題。我已經提取了此示例中的 URL 以及相應的標題,但這只是說明性的,如果這不是您需要的,您可以忽略它們。


查看完整回答
反對 回復 2022-07-11
  • 1 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號