Golang爬蟲(二) goquery庫的使用

2021-09-27 04:26:24 字數 1547 閱讀 3803

goquery為go語言帶來了類似於jquery的語法和一組特性。它基於go的net / html包和css selector庫cascadia。由於net / html解析器返回節點,而不是功能齊全的dom樹,因此jquery的有狀態操作函式(如height(),css(),detach())已經停止。

此外,因為net / html解析器需要utf-8編碼,所以goquery也是如此:呼叫者有責任確保源文件提供utf-8編碼的html。有關執行此操作的各種選項

go get github.com/puerkitobio/goquery
請注意,由於net / html依賴性,goquery需要go1.1 +版本

基於html element 元素的選擇器

就是基於a,p等這些html的基本元素進行選擇。

使用方法 :使用語法為 dom.find(「p」),匹配文件中所有的p標籤。

id 選擇器

id選擇器是我們使用最頻繁的,假如我們有2個p元素,其實我們只需要其中的乙個,那麼我們只需要給這個標記乙個唯一的id即可,這樣我們就可以使用id選擇器,精確定位了。

使用方法 :id選擇器以#開頭,緊跟著元素id的值,使用語法為

dom.find("#title") ,匹配文件中所有的 id=title的內容

如果多個標籤的id都是title,我們可以指定某乙個標籤,如dom.find(「p#title」)

class選擇器

類選擇跟id選擇器一樣都是使用很頻繁的,我們可以通過類選擇器快速篩選到需要的內容。

使用方法 : id選擇器以.開頭,緊跟著元素class的值,使用語法為dom.find(".content1"),匹配文件中所有的 id=title的元素。

類選擇權器跟id選擇器一樣,也可以指定某乙個標籤dom.find(「div.content1」)

屬性選擇器

乙個html元素都有自己的屬性以及屬性值,所以我們也可以通過屬性和值篩選元素。

使用方法 :我們可以通過元素的屬性和屬性值來篩選資料,使用語法為dom.find("p[class=content1],匹配文件中所有的 p標 籤的class屬性是content1的元素。

當然我們這裡以class屬性為例,還可以用其他屬性,比如href等很多,自定義屬性也是可以的。

內建函式

1)類似函式的位置操作

2)迴圈遍歷選擇的節點

3)檢測或獲取節點屬性值

4)在文件樹之間來回跳轉(常用的查詢節點方法

使用示例:

c := colly.newcollector()

///on every a element which has href attribute call callback

c.onhtml("body", func(e *colly.htmlelement)

} else

}) //電影簡介

introduction, _ := dom.find(".movietext").find(".introduction").html()

})c.visit("")

golang爬蟲登入

www.changtu.com 實現登入頁面的抓取,http請求登入,下面直接貼 實現get請求函式 func this myspider readurlbody string,error defer resp.body.close body,err ioutil.readall resp.body...

Golang實現正方教務系統爬蟲 二

上次我們已經登入進了首頁,明白了爬蟲的原理,這次我們看一下web介面是如何實現的.專案位址 程式目前的功能很簡單一共四個函式.welcone處理登入請求,querycredit處理學分查詢,querygrade處理成績查詢.welcome函式中判斷請求方式,get請求則返回login介面,post請...

golang 多執行緒爬蟲

這是乙個golang爬蟲demo 爬去乙個美女 的首頁所有 採用golang 多執行緒的方式爬取 將爬到的儲存到本地 乙個妹子 請求的 header 必須帶著 referer 否則404 比較簡單的一種反爬蟲策略 用wireshark 抓取瀏覽器請求的資料就可以得到 referer 不複雜,適合新手...