




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Golang爬蟲(chóng)框架colly的使用目錄項(xiàng)目特性安裝colly實(shí)例colly的配置colly頁(yè)面爬取和解析colly框架重構(gòu)爬蟲(chóng)Golang爬蟲(chóng)框架colly簡(jiǎn)介
colly是一個(gè)采用Go語(yǔ)言編寫的Web爬蟲(chóng)框架,旨在提供一個(gè)能夠些任何爬蟲(chóng)/采集器/蜘蛛的簡(jiǎn)介模板,通過(guò)Colly。你可以輕松的從網(wǎng)站提取結(jié)構(gòu)化數(shù)據(jù),然后進(jìn)行數(shù)據(jù)挖掘,處理或歸檔
項(xiàng)目特性
清晰明了的API速度快(每個(gè)內(nèi)核上的請(qǐng)求數(shù)大于1K)管理每個(gè)域的請(qǐng)求延遲和最大并發(fā)數(shù)自動(dòng)cookie和會(huì)話處理同步/異步/并行抓取高速緩存自動(dòng)處理非Unicode編碼支持Robots.txt支持GoogleAppEngine通過(guò)環(huán)境變量進(jìn)行配置可拓展
安裝colly
goget-u/gocolly/colly
第一個(gè)colly應(yīng)用
packagemain
import(
"fmt"
"/gocolly/colly"
funcmain(){
c:=colly.NewCollector()
//goqueryselectorclass
c.OnHTML(".sidebar_link",func(e*colly.HTMLElement){
e.Request.Visit(e.Attr("href"))
/*link:=e.Attr("href")
//Printlink
fmt.Printf("Linkfound:%q-%s\n",e.Text,link)
//Visitlinkfoundonpage
//OnlythoselinksarevisitedwhichareinAllowedDomains
c.Visit(e.Request.AbsoluteURL(link))*/
c.OnRequest(func(r*colly.Request){
fmt.Println("url:",r.URL)
c.Visit("https://gorm.io/zh_CN/docs/")
回調(diào)函數(shù)的調(diào)用順序
OnRequest在請(qǐng)求之前調(diào)用OnError如果請(qǐng)求期間發(fā)生錯(cuò)誤,則調(diào)用OnResponseHeaders在收到響應(yīng)標(biāo)頭后調(diào)用OnResponse收到回復(fù)后調(diào)用OnHTMLOnResponse如果接收到的內(nèi)容是HTML,則在此之后立即調(diào)用OnXMLOnHTML如果接收到的內(nèi)容是HTML或XML,則在之后調(diào)用OnScraped在OnXML回調(diào)之后調(diào)用
實(shí)例
funccollback(){//添加回調(diào)收集器
c:=colly.NewCollector()
c.OnRequest(func(r*colly.Request){
fmt.Println("請(qǐng)求前調(diào)用:OnRequest")
//fmt.Println("Visiting",r.URL)
c.OnError(func(_*colly.Response,errerror){
fmt.Println("發(fā)生錯(cuò)誤調(diào)用:OnReOnError")
//log.Println("Somethingwentwrong:",err)
/*c.OnResponseHeaders(func(r*colly.Response){//高版本已經(jīng)不用了
fmt.Println("Visited",r.Request.URL)
c.OnResponse(func(r*colly.Response){
fmt.Println("獲得響應(yīng)后調(diào)用:OnResponse")
//fmt.Println("Visited",r.Request.URL)
c.OnHTML("a[href]",func(e*colly.HTMLElement){
fmt.Println("OnResponse收到html內(nèi)容后調(diào)用:OnHTML")
//e.Request.Visit(e.Attr("href"))
/*c.OnHTML("trtd:nth-of-type(1)",func(e*colly.HTMLElement){
fmt.Println("Firstcolumnofatablerow:",e.Text)
})*/
c.OnXML("http://h1",func(e*colly.XMLElement){
fmt.Println("OnResponse收到xml內(nèi)容后調(diào)用:OnXML")
//fmt.Println(e.Text)
c.OnScraped(func(r*colly.Response){
fmt.Println("結(jié)束",r.Request.URL)
c.Visit("https://gorm.io/zh_CN/docs/")
得到的:
colly的配置
設(shè)置UserAgent
//設(shè)置UserAgent的兩種方式:
/*//方式一:
c2:=colly.NewCollector()
c2.UserAgent="xy"
c2.AllowURLRevisit=true*/
/*//方式二:
c2:=colly.NewCollector(
colly.UserAgent("xy"),
colly.AllowURLRevisit(),
設(shè)置Cookie
//設(shè)置cookie的兩種方式
//方式一:通過(guò)手動(dòng)網(wǎng)頁(yè)添加cookies
c.OnRequest(func(r*colly.Request){
r.Headers.Add("cookie","_ga=GA1.2.1611472128.1650815524;_gid=GA1.2.2080811677.1652025429;__atuvc=2|17,0|18,5|19")
//方式二:通過(guò)url添加cookies
siteCookie:=c.Cookies("url")
c.SetCookies("",siteCookie)
HTTP配置
Colly使用Golang的默認(rèn)http客戶端作為網(wǎng)絡(luò)層??梢酝ㄟ^(guò)更改默認(rèn)的HTTProundtripper來(lái)調(diào)整HTTP選項(xiàng)。
c:=colly.NewCollector()
c.WithTransport(http.Transport{
Proxy:http.ProxyFromEnvironment,
DialContext:(net.Dialer{
Timeout:30*time.Second,
KeepAlive:30*time.Second,
DualStack:true,
}).DialContext,
MaxIdleConns:100,
IdleConnTimeout:90*time.Second,
TLSHandshakeTimeout:10*time.Second,
ExpectContinueTimeout:1*time.Second,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)備役介紹課件
- 健康飲食產(chǎn)業(yè)園項(xiàng)目運(yùn)營(yíng)管理方案(范文模板)
- 城市污水管網(wǎng)建設(shè)工程初步設(shè)計(jì)(參考模板)
- 2025年交流調(diào)頻調(diào)壓牽引裝置項(xiàng)目建議書
- 五年級(jí)上冊(cè)音樂(lè)教案(全集)
- 現(xiàn)場(chǎng)施工事故應(yīng)急救援預(yù)案制度
- 2025年新型節(jié)能水泵、風(fēng)機(jī)和壓縮機(jī)項(xiàng)目建議書
- 2025年防沉劑項(xiàng)目發(fā)展計(jì)劃
- 2025年高純工藝系統(tǒng)設(shè)備分條機(jī)項(xiàng)目建議書
- 針對(duì)2025年工業(yè)污染源全面達(dá)標(biāo)排放計(jì)劃的實(shí)施方案的環(huán)境風(fēng)險(xiǎn)評(píng)估與管理001
- 2025中國(guó)白酒酒業(yè)市場(chǎng)中期研究報(bào)告
- 緊急疏散培訓(xùn)課件
- 2024年石嘴山市直機(jī)關(guān)遴選和選調(diào)公務(wù)員筆試真題
- 17.2 直角三角形 課件
- 2025年安全教育培訓(xùn)考試應(yīng)急救援知識(shí)題庫(kù)高頻試題
- 高等數(shù)學(xué)導(dǎo)數(shù)及其應(yīng)用教案
- 2025年人教版小學(xué)六年級(jí)科學(xué)(下冊(cè))期末考卷附答案
- 高純氣體不銹鋼管道施工方案
- 2008-2024年河南省信陽(yáng)市固始縣事業(yè)單位考試《公共基礎(chǔ)知識(shí)》試卷及答案
- 商業(yè)聯(lián)盟策劃方案(3篇)
- 火力發(fā)電廠項(xiàng)目工程建設(shè)規(guī)范標(biāo)準(zhǔn)強(qiáng)制性條文執(zhí)行表格電氣分冊(cè)
評(píng)論
0/150
提交評(píng)論