golang 爬蟲 mysql golang 爬蟲

2021-10-18 19:00:37 字數 1474 閱讀 2804

本文主要通過golang來介紹針對html的parse和修正

1,有可能單純的爬並不能滿足需求

2,有可能單純的爬格式或者內容不能自定義

這裡筆者通過乙個case來進行介紹

第三方庫:puerkitobio/goquery​github.com

可以通過get url 或者read local file 來讀取html檔案

這裡筆者有個需求,就是去除email中的簽名

經過觀察發現,簽名都是body最後乙個div。這樣目前就明確來,就是parse html之後去除最後乙個div。所以,

1,這裡我們用到remove() 這個函式

就是find() 指定的內容,然後在老的基礎上移除,生成新的html

2,這裡我們還用到乙個知識點,就是如何定位到最後乙個div。

這裡我們用 div:last-child 來定義最後乙個div節點

html := `***x`

doc, err := goquery.newdocumentfromreader(strings.newreader(html))

if err != nil {

log.fatal(err)

doc.find("div:last-child").each(func(_ int, s *goquery.selection) {

s.remove()

html1, _ := doc.html()

fmt.println(html1)

遇到的問題:

1,在去郵件簽名的時候:由於每封郵件的格式不一致,導致,會出現,把整個郵件過濾,或者過濾失敗,所以根據去除最後乙個div這個條件的時候,在加乙個判斷,判斷是否存在同級的div,如果存在,則去除最後乙個,如果不存在,則往該div下一層的元素進行檢視

這裡檢視div是否為多個的方式為:

div := doc.find("body > div").nodes

divlen := len(div)

如果divlen如果為1,說名body下就只有乙個div元素,則

doc.find("div div").find("div div").find("div:last-child").each(func(_ int, s *goquery.selection) {

s.remove()

否則就直接:

doc.find("div:last-child").each(func(_ int, s *goquery.selection) {

s.remove()

最後htmlnosign, err := doc.html()

if err != nil {

return

ioutil.writefile("email.nosign.html", byte(htmlnosign), 0644)

感謝分享:

golang爬蟲登入

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

golang 多執行緒爬蟲

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

mysql go命令 mysql命令

1 show processlist show processlist顯示哪些執行緒正在執行。您也可以使用mysqladmin processlist語句得到此資訊。如果您有super許可權,您可以看到所有執行緒。否則,您只能看到您自己的執行緒 也就是,與您正在使用的mysql賬戶相關的執行緒 如果...