




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第Golang爬蟲框架colly的使用目錄項目特性安裝colly實例colly的配置colly頁面爬取和解析colly框架重構(gòu)爬蟲Golang爬蟲框架colly簡介
colly是一個采用Go語言編寫的Web爬蟲框架,旨在提供一個能夠些任何爬蟲/采集器/蜘蛛的簡介模板,通過Colly。你可以輕松的從網(wǎng)站提取結(jié)構(gòu)化數(shù)據(jù),然后進(jìn)行數(shù)據(jù)挖掘,處理或歸檔
項目特性
清晰明了的API速度快(每個內(nèi)核上的請求數(shù)大于1K)管理每個域的請求延遲和最大并發(fā)數(shù)自動cookie和會話處理同步/異步/并行抓取高速緩存自動處理非Unicode編碼支持Robots.txt支持GoogleAppEngine通過環(huán)境變量進(jìn)行配置可拓展
安裝colly
goget-u/gocolly/colly
第一個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在請求之前調(diào)用OnError如果請求期間發(fā)生錯誤,則調(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)用
實例
funccollback(){//添加回調(diào)收集器
c:=colly.NewCollector()
c.OnRequest(func(r*colly.Request){
fmt.Println("請求前調(diào)用:OnRequest")
//fmt.Println("Visiting",r.URL)
c.OnError(func(_*colly.Response,errerror){
fmt.Println("發(fā)生錯誤調(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的兩種方式
//方式一:通過手動網(wǎng)頁添加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")
//方式二:通過url添加cookies
siteCookie:=c.Cookies("url")
c.SetCookies("",siteCookie)
HTTP配置
Colly使用Golang的默認(rèn)http客戶端作為網(wǎng)絡(luò)層??梢酝ㄟ^更改默認(rèn)的HTTProundtripper來調(diào)整HTTP選項。
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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨床路徑管理與護(hù)理實踐
- 智能家居解決方案采購補(bǔ)充協(xié)議
- 留學(xué)國家政策動態(tài)監(jiān)測與預(yù)警合同
- 2025設(shè)備維修保養(yǎng)服務(wù)合同范本
- 利華益往年考試題及答案
- 司法考試題及答案
- 美食成分測試題及答案
- 黨史的筆試題目及答案
- 河源體育考編試題及答案
- 珠海客服面試題庫及答案
- 廣州市人力資源和社會保障局事業(yè)單位招聘工作人員【共500題附答案解析】模擬檢測試卷
- 產(chǎn)品定價和定價策略課程課件
- 鎂的理化性質(zhì)及危險特性表MSDS
- JC-MM-會計核算手冊模板(生產(chǎn)制造業(yè))V1
- 頂管工程施工組織設(shè)計方案
- 常用數(shù)學(xué)物理英語詞匯
- 2021年浙江省杭州市西湖區(qū)杭州綠城育華小學(xué)一級下冊期末數(shù)學(xué)試卷
- 國家儲備林改培外業(yè)調(diào)查技術(shù)
- 季節(jié)熱能儲存技術(shù)現(xiàn)狀
- T∕CNEA 001.1-2021 核能行業(yè)供應(yīng)商評價與管理規(guī)范 第1部分:合格供應(yīng)商要求及判定規(guī)則
- 貝朗CRRT操作常見報警及處理
評論
0/150
提交評論