




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Golang爬蟲框架colly的使用目錄項目特性安裝colly實例colly的配置colly頁面爬取和解析colly框架重構爬蟲Golang爬蟲框架colly簡介
colly是一個采用Go語言編寫的Web爬蟲框架,旨在提供一個能夠些任何爬蟲/采集器/蜘蛛的簡介模板,通過Colly。你可以輕松的從網站提取結構化數據,然后進行數據挖掘,處理或歸檔
項目特性
清晰明了的API速度快(每個內核上的請求數大于1K)管理每個域的請求延遲和最大并發數自動cookie和會話處理同步/異步/并行抓取高速緩存自動處理非Unicode編碼支持Robots.txt支持GoogleAppEngine通過環境變量進行配置可拓展
安裝colly
goget-u/gocolly/colly
第一個colly應用
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/")
回調函數的調用順序
OnRequest在請求之前調用OnError如果請求期間發生錯誤,則調用OnResponseHeaders在收到響應標頭后調用OnResponse收到回復后調用OnHTMLOnResponse如果接收到的內容是HTML,則在此之后立即調用OnXMLOnHTML如果接收到的內容是HTML或XML,則在之后調用OnScraped在OnXML回調之后調用
實例
funccollback(){//添加回調收集器
c:=colly.NewCollector()
c.OnRequest(func(r*colly.Request){
fmt.Println("請求前調用:OnRequest")
//fmt.Println("Visiting",r.URL)
c.OnError(func(_*colly.Response,errerror){
fmt.Println("發生錯誤調用:OnReOnError")
//log.Println("Somethingwentwrong:",err)
/*c.OnResponseHeaders(func(r*colly.Response){//高版本已經不用了
fmt.Println("Visited",r.Request.URL)
c.OnResponse(func(r*colly.Response){
fmt.Println("獲得響應后調用:OnResponse")
//fmt.Println("Visited",r.Request.URL)
c.OnHTML("a[href]",func(e*colly.HTMLElement){
fmt.Println("OnResponse收到html內容后調用: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內容后調用:OnXML")
//fmt.Println(e.Text)
c.OnScraped(func(r*colly.Response){
fmt.Println("結束",r.Request.URL)
c.Visit("https://gorm.io/zh_CN/docs/")
得到的:
colly的配置
設置UserAgent
//設置UserAgent的兩種方式:
/*//方式一:
c2:=colly.NewCollector()
c2.UserAgent="xy"
c2.AllowURLRevisit=true*/
/*//方式二:
c2:=colly.NewCollector(
colly.UserAgent("xy"),
colly.AllowURLRevisit(),
設置Cookie
//設置cookie的兩種方式
//方式一:通過手動網頁添加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的默認http客戶端作為網絡層。可以通過更改默認的HTTProundtripper來調整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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫療大數據挖掘技術發展趨勢分析
- 2025年線上教學階段性工作總結模版
- 3固定合同范例
- 讀陋室銘學生讀后心得體會模版
- 上海家裝室內設計合同范例
- 2024年氧化鋯纖維隔膜布項目資金籌措計劃書代可行性研究報告
- 醫療領域下的區塊鏈與專利保護研究
- 上海網約車買車合同范例
- 醫療器械租賃行業的市場前景與挑戰
- 倉庫吊裝合同樣本
- 馬家河金礦選礦試驗報告
- “新時代好少年”推薦表
- 園林綠化工程監理實施細則(完整版)
- 規章制度文件評審表
- 草坪學實習報告模板-Copy
- K-H-V行星齒輪減速器 瞿鴻鵬
- 事業單位節能減排工作實施方案
- 住宅樓消防工程施工組織設計方案(DOC39頁)
- 歐科變頻器說明書文檔
- 2-1春風帶我去散步
- 鄭州印象城市介紹旅游推介專題講授PPT課件
評論
0/150
提交評論