日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang笔记14--go 语言爬虫实战项目介绍

發布時間:2023/12/10 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang笔记14--go 语言爬虫实战项目介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

golang筆記14--go 語言爬蟲實戰項目介紹

  • 1 介紹
  • 2 開始實戰項目
    • 2.1 爬蟲項目介紹
    • 2.2 爬蟲的法律風險
    • 2.3 新爬蟲的選擇
    • 2.4 總體算法
  • 3 注意事項
  • 4 說明

1 介紹

本文繼上文 golang筆記13–go語言 http 及其它標準庫, 進一步了解 go 語言爬蟲實戰項目介紹,以及相應注意事項。
具體包括: 爬蟲項目介紹、爬蟲的法律風險、新爬蟲的選擇、總體算法 等內容。

2 開始實戰項目

2.1 爬蟲項目介紹

  • 選擇爬蟲項目原因
    1)有一定的復雜性;
    2)可以靈活調整項目的復雜性;
    3)需要平衡語言 | 爬蟲之間的比重;

  • 網絡爬蟲分類
    1)通用爬蟲,例如百度、Google,它們會搜索互聯網上的所有數據并保存下來,搜搜的時候直接從存儲的備份里面找到目標內容,然后再訪問實際網站內容;
    2)聚焦爬蟲,從互聯網獲取結構話數據,不保存所有數據,只根據一些需要提取需要的數據;

  • go 語言常見爬蟲庫 | 框架

    • henrylee2cn/pholcus
      ? Pholcus(幽靈蛛)是一款純 Go 語言編寫的支持分布式的高并發爬蟲軟件,僅用于編程學習與研究。
      ? 它支持單機、服務端、客戶端三種運行模式,擁有Web、GUI、命令行三種操作界面;規則簡單靈活、批量任務并發、輸出方式豐富(mysql/mongodb/kafka/csv/excel等);另外它還支持橫縱向兩種抓取模式,支持模擬登錄和任務暫停、取消等一系列高級功能。
    • gocrawl
      gocrawl是一個采用Go編寫的微型并發Web爬蟲。
    • colly
      ? Lightning Fast and Elegant Scraping Framework for Gophers.
      ? Colly provides a clean interface to write any kind of crawler/scraper/spider.
      ? With Colly you can easily extract structured data from websites, which can be used for a wide range of applications, like data mining, data processing or archiving.
    • hu17889/go_spider
      ? go_spider 基于golang開發,是一個開放的垂直領域的爬蟲框架,框架中將各個功能模塊區分開,方便使用者重新實現子模塊,進而構建自己垂直方方向的爬蟲。

  • 項目總體結構
    1)選擇目標網絡資源,如珍愛網、愛卡網;
    2)完成分布式爬蟲模塊;
    3)存儲到指定數據庫中;
    4)提供簡單的前端展示;
    本項目為了提高go語言熟練度,不使用現有爬蟲庫,全部手寫;使用ElasticSearch 作為數據存儲;使用go語言標準模板庫實現 http 數據展示部分;

  • 2.2 爬蟲的法律風險

  • robots 協議
    一般網站都會增加一個robots.txt 來說明可以爬、不可爬以及不愿意被爬的內容。
  • 技術上:沒有約束力
    如果需要禁止某個agent訪問,則需要在安全程序層面加以監測和阻止。
  • 法律上:作為參考
    一方面,robots 上不允許爬蟲的,一般最好不要爬,以防影響網站的正常業務(可能存在法律風險);
    另一方面,robots協議默認允許所有項;
    除此之外,網站所有者可能沒有關注或者寫錯 robots.txt 相關的信息;
    因此需要根據常識判斷,不能隨意爬、無限速爬(QPS 不能影響對方正常服務),若不確定時候可以咨詢相關人士或者聯系網站管理人員(有些爬蟲數據是有利于你網站方的)。
  • ? 以下為 github、zhenai、xcar 等3個常見網站的爬蟲約束文檔;從文檔中可以發現github 有很多子頁面都是不希望被爬取的,珍愛網很多 profile下很多操作也是被希望被爬取的。

    1) https://github.com/robots.txt # If you would like to crawl GitHub contact us via https://support.github.com/contact/ # We also provide an extensive API: https://developer.github.com/ User-agent: baidu crawl-delay: 1User-agent: *Disallow: /*/pulse Disallow: /*/tree/ Disallow: /*report-abuse?report=* Disallow: /*tab=* ...... Disallow: /account-login Disallow: /Explodingstuff/2) https://www.zhenai.com/robots.txt User-agent: *Disallow: /*?* Disallow: /*jsps* Disallow: /login/* Disallow: /register* Disallow: /profile/addfriend.jsps* Disallow: /profile/getmemberdata11.jsps* Disallow: /profile/getmemberdata.jsps* Disallow: /profile/addfriend.jsps* Disallow: /profile/sendleer.jsps* Disallow: /?fromMemberId=* Disallow: /.asp$ Disallow: /.php$ Disallow: /.action$ Disallow: /plus/ Disallow: /kwsearch/3) https://www.xcar.com.cn/robots.txt User-agent: * Disallow: /bbs/admin/ Disallow: /bbs/api/ ...... Disallow: /.js?* Disallow: /.php?type=cmssitemap: http://www.xcar.com.cn/sitemap.xml

    2.3 新爬蟲的選擇

    爬取網站類別:比較廉價的數據,訪問量大的網站;
    參考數據類別:金融、體育、新聞、產品等類別的數據;

    本項目:
    1)爬取愛卡汽車各車型數據;
    2)項目的設計使得我們只需要增量修改;
    3)新的解析器,新的配置;

    通過本項目可以學習模塊化、任務管理、調度、分布式搭建、接口、函數式編程等各類 golang 基礎知識。

    2.4 總體算法

    想讓程序獲取數據信息,那么必須先嘗試人工獲取信息,然后設置指定爬蟲起始爬蟲位置,再根據規則爬取需要的數據,根據鏈接爬取更多的數據。
    本案例通過查看 珍愛網 和 世紀佳緣網 ,發現可以從 珍愛網-征婚 頁面可以找到所有城市信息,并且能在不登錄的情況下查看對應的用戶數據(當然少量操作需要登錄狀態下才能獲取);因此,本案例爬取珍愛網數據。

    算法說明:
    本案例中 爬蟲總體算法 和 爬蟲實現步驟如下圖所示:
    算法層面,從城市列表 獲取子城市數據,然后進一步獲取用戶數據,并且根據用戶能進一步獲取推薦用戶數據;
    實現步驟層面,從單任務版升級到并發版本,再進一步優化為分布式版本;

    爬蟲總體算法


    爬蟲實現步驟

    3 注意事項

    待添加

    4 說明

  • 軟件環境
    go版本:go1.15.8
    操作系統:Ubuntu 20.04 Desktop
    Idea:2020.01.04
  • 參考文檔
    由淺入深掌握Go語言 --慕課網
    經典爬蟲框架-henrylee2cn/pholcus
    經典爬蟲框架-gocrawl
    經典爬蟲框架-colly
    經典爬蟲框架-hu17889/go_spider
  • 總結

    以上是生活随笔為你收集整理的golang笔记14--go 语言爬虫实战项目介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。