《實戰Python網絡爬蟲》- 感想


端午節假期過了,之前一直在做出行准備,后面旅游完又休息了一下,最近才恢復狀態。

端午假期最后一天收到一個快遞,回去打開,發現是微信抽獎中的一本書,黃永祥的《實戰Python網絡爬蟲》。

去各大網站搜了一下這個人,沒有名氣,去網購平台看了他別的書的書評,整體來說,書都是拼湊的。。。

但是既然書到手了,不妨翻開看看,剛好最近沒有什么頭緒,又偏頭痛。花了幾個半天整體翻了一下這本書,感覺是有點淺顯的。

我之前用java寫過爬蟲,感覺比較難的還是反爬蟲這塊。這本書,我先看了第一個實戰項目,51job的,運行了代碼之后發現,哦,好吧,這個網站,貌似沒有反爬蟲機制?

其實具體的爬取內容的方法各個網站也是差不多的。主要還是反爬蟲這塊。但是書上內容不多,只有一個章節。

個人覺得,對於爬蟲新手,看一看每章的小結,還是很能增長一些見識的。更深入的技術,大概這本書是不能提供的。

后續有時間,我大概會摘錄一些小結放到這里來吧~雖然沒什么人看這里。

網絡爬蟲

定義:自動抓取網絡信息

分類

  • 通用網絡爬蟲/全網爬蟲:主要為門戶站點搜索引擎大型網站服務采集數據
  • 聚焦網絡爬蟲/主題網絡爬蟲:選擇性地爬取主題相關的頁面
  • 增量式網絡爬蟲:對已下載網頁采取增量式更新/只爬取新產生或已經發生變化的網頁
  • 深層網絡爬蟲:內容不能通過靜態URL獲取/隱藏在搜索表單后/只有用戶提交一些關鍵詞才能獲得的頁面

網站分析

  1. 找出數據來源:Doc、XHR、JS
  2. 找出數據所在請求,分析請求鏈接、請求方式、請求參數
  3. 確定參數來源:固定可選值、通過別的請求生成、經過JS處理、特殊值

抓包工具:Fiddler

爬蟲庫:

  • urllib
  • requests:語法簡單,兼容python2和3
  • requests_html:提供了數據清洗、ajax數據動態渲染

爬蟲緩存:requests_cache

requests_cache.install_cache(backend='memory')

存儲機制

  • memory:每次程序運行都會將緩存以字典形式保存在內存中
  • sqlite:默認存儲機制
  • redis:通過redis模塊實現數據庫的讀寫
  • mongo:通過pymongo模塊實現數據庫的讀寫

網頁操控與數據爬取Selenium

手機App數據爬取Appium

驗證碼識別

  • 人工識別
  • ocr
  • 調用第三方平台API:在線人員、人工智能

數據清洗

  1. 字符串操作:截取、替換、查找、分割
  2. 正則表達式
  3. 第三方模塊/庫BeautifulSoup

分布式爬蟲

並發庫concurrent.futures:ThreadPoolExecutor和ProcessPoolExecutor

反爬蟲技術

  1. 基於用戶請求的Headers→固定屬性+可變屬性
  2. 基於用戶操作網站的行為→代理IP
  3. 基於網站目錄數據加載→模擬ajax請求
  4. 基於數據加密
  5. 基於驗證碼識別
  6. 基於請求參數
  7. 基於cookies→構建cookies池、代理IP、動態構建cookies、利用瀏覽器獲取cookies


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM