Python爬蟲-01:爬蟲的概念及分類

来源:https://www.cnblogs.com/haochen273/archive/2018/12/31/10202010.html
-Advertisement-
Play Games

[TOC] 1. 為什麼要爬蟲? “大數據時代”,數據獲取的方式: 大型企業公司有海量用戶,需要收集數據來提升產品體驗 【百度指數(搜索),阿裡指數(網購),騰訊數據(社交)】 數據管理咨詢公司: 通過數據團隊專門提供大量數據,通過市場調研,問卷調查等 政府/機構提供的公開數據 中華人民共和國統計局 ...


目錄

# 1. 為什麼要爬蟲?

“大數據時代”,數據獲取的方式:

  • 大型企業公司有海量用戶,需要收集數據來提升產品體驗
    【百度指數(搜索),阿裡指數(網購),騰訊數據(社交)】
  • 數據管理咨詢公司: 通過數據團隊專門提供大量數據,通過市場調研,問卷調查等
  • 政府/機構提供的公開數據
    • 中華人民共和國統計局
    • World bank
    • Nasdaq
  • 第三方數據平臺購買數據
    • 數據堂
    • 貴陽大數據交易平臺
  • 爬蟲數據

2. 什麼是爬蟲?


抓取網頁數據的程式

3. 爬蟲如何抓取網頁數據?


首先需要瞭解網頁的三大特征:

  1. 每個網頁都有自己的URL(統一資源定位符)來定位
  2. 網頁都使用HTML(超文本標記語言)來描述頁面信息
  3. 網頁都使用HTTP/HTTPS(超文本傳輸協議)來傳輸HTML數據

爬蟲的設計思路:

  1. 首先確定需要爬取的網URL地址
  2. 通過HTTP/HTTPS協議來獲取對應的HTML頁面
  3. 提取HTML頁面內有用的數據:

a. 如果是需要的數據--保存

b. 如果有其他URL,繼續執行第二步

# 4. Python爬蟲的優勢?

語言 優點 缺點
PHP 世界上最好的語言 對多線程,非同步支持不好,併發處理不夠
Java 網路爬蟲生態圈完善 Java語言本身笨重,代碼量很大,數據重構成本高
C/C++ 運行效率和性能幾乎最強 學習成本很高
python 語法優美,代碼簡潔,開發效率高,模塊多

5. 學習路線


  1. 抓取HTML頁面:
  • HTTP請求的處理: urllib, urlib2, requests
  • 處理器的請求可以模擬瀏覽器發送請求,獲取伺服器響應的文件
  1. 解析伺服器相應的內容:
  • re, xpath, BeautifulSoup(bs4), jsonpath, pyquery等
  • 使用某種描述性語言來給我們需要提取的數據定義一個匹配規則,符合這個規則的數據就會被匹配
  1. 採集動態HTML,驗證碼的處理
  • 通用動態頁面採集: Selenium + PhantomJS:模擬真實瀏覽器載入JS
  • 驗證碼處理: Tesseract機器學習庫,機器圖像識別系統
  1. Scrapy框架:
  • 高定製性,高性能(非同步網路框架twisted)->數據下載快
  • 提供了數據存儲,數據下載,提取規則等組件
  1. 分散式策略:
  • scrapy redis:在scarpy基礎上添加了以redis資料庫為核心的一套組件,主要在redis做請求指紋去重、請求分配、數據臨時存儲
  1. 爬蟲、反爬蟲、反反爬蟲之間的鬥爭:
  • User-Agent, 代理, 驗證碼, 動態數據載入, 加密數據

6. 爬蟲的分類


6.1 通用爬蟲:

1.定義: 搜索引擎用的爬蟲系統
2.目標: 把所有互聯網的網頁爬取下來,放到本地伺服器形成備份,在對這些網頁做相關處理(提取關鍵字,去除廣告),最後提供一個用戶可以訪問的藉口

3.抓取流程:

a) 首先選取一部分已有的URL, 把這些URL放到帶爬取隊列中

b) 從隊列中取出來URL,然後解析NDS得到主機IP,然後去這個IP對應的伺服器里下載HTML頁面,保存到搜索引擎的本地伺服器里,之後把爬過的URL放入已爬取隊列

c) 分析網頁內容,找出網頁里其他的URL連接,繼續執行第二步,直到爬取結束

4.搜索引擎如何獲取一個新網站的URL:

  1. 主動向搜索引擎提交網址: https://ziyuan.baidu.com/linksubmit/index
  2. 在其他網站設置網站的外鏈: 其他網站上面的友情鏈接
  3. 搜索引擎會和DNS服務商進行合作,可以快速收錄新網站

5.通用爬蟲註意事項
通用爬蟲並不是萬物皆可以爬,它必須遵守規則:
Robots協議:協議會指明通用爬蟲可以爬取網頁的許可權

我們可以訪問不同網頁的Robots許可權

6.通用爬蟲通用流程:

7.通用爬蟲缺點

  1. 只能提供和文本相關的內容(HTML,WORD,PDF)等,不能提供多媒體文件(msic,picture, video)及其他二進位文件
  2. 提供結果千篇一律,不能針對不同背景領域的人聽不同的搜索結果
  3. 不能理解人類語義的檢索
  4. 聚焦爬蟲的優勢所在

DNS 功能變數名稱解析成IP: 通過在命令框中輸入ping www.baidu.com,得到伺服器的IP

DNS實例

6.2 聚焦爬蟲:

爬蟲程式員寫的針對某種內容的爬蟲-> 面向主題爬蟲,面向需要爬蟲


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • jsp隱式對象都包括什麼?包括request、response、out、session、application、config、pageContext。 ...
  • org.hibernate.exception.SQLGrammarException:could not insert ...
  • VSCode配置JAVA開發環境 1:給機器安裝JDK、MAVEN 下載JDK 下載路徑:https://www.oracle.com/technetwork/java/javase/downloads/jdk11 downloads 5066655.html 配置JAVA的環境變數 我的JDK在硬 ...
  • 一.random模塊 隨機 random() 隨機小數 uninform(a,b) 隨機小數 randint(a,b) 隨機整數 choice() 隨機選擇一個 sample() 隨機選擇多個 shuffle() 打亂 二.Counter 計數 三.字典 1.預設值字典 2.有序字典 四.棧和隊列 ...
  • 難點:如何測試。我的解決方式是:a,三種解法,看結果是否一致。b,小數據(100個點),人工排查。第一種方法,暴力法適合小數據。第二種方法:我的改進型。第三種方法:經典方法(分治法)。實驗證明1000萬數據時,我的演算法有優勢。暴力演算法,O(n2)。我的改進型要點:先對所有數據按Y排序。只比較y距離小 ...
  • 此文章非常詳細介紹了Springboot2.0與Mybatis的整合,並且採用Rest風格作為輸入和輸出,項目還使用了兩個很優秀的工具,一個是:Mybatis-Generator代碼生成器,可以方便生成PO、Mapper介面、MapperXml映射文件,而且直接配置生成到項目指定目錄下,不用做任何修... ...
  • 題目內容: 對數字求特征值是常用的編碼演算法,奇偶特征是一種簡單的特征值。對於一個整數,從個位開始對每一位數字編號,個位是1號,十位是2號,以此類推。這個整數在第n位上的數字記作x,如果x和n的奇偶性相同,則記下一個1,否則記下一個0。按照整數的順序把對應位的表示奇偶性的0和1都記錄下來,就形成了一個 ...
  • 0x01 前言 2018年8月22日,Apache Strust2發佈最新安全公告,Apache Struts2存在遠程代碼執行的高危漏洞(S2-057/CVE-2018-11776),該漏洞由Semmle Security Research team的安全研究員Man YueMo發現。該漏洞是由於 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...