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

端午節假期過了,以前一直在作出行準備,後面旅遊完又休息了一下,最近才恢復狀態。html

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

去各大網站搜了一下這我的,沒有名氣,去網購平臺看了他別的書的書評,總體來講,書都是拼湊的。。。python

可是既然書到手了,不妨翻開看看,恰好最近沒有什麼頭緒,又偏頭痛。花了幾個半天總體翻了一下這本書,感受是有點淺顯的。ajax

我以前用java寫過爬蟲,感受比較難的仍是反爬蟲這塊。這本書,我先看了第一個實戰項目,51job的,運行了代碼以後發現,哦,好吧,這個網站,貌似沒有反爬蟲機制?正則表達式

其實具體的爬取內容的方法各個網站也是差很少的。主要仍是反爬蟲這塊。可是書上內容很少,只有一個章節。redis

我的以爲,對於爬蟲新手,看一看每章的小結,仍是很能增加一些見識的。更深刻的技術,大概這本書是不能提供的。sql

後續有時間,我大概會摘錄一些小結放到這裏來吧~雖然沒什麼人看這裏。數據庫

網絡爬蟲

定義:自動抓取網絡信息瀏覽器

分類緩存

  • 通用網絡爬蟲/全網爬蟲:主要爲門戶站點搜索引擎大型網站服務採集數據
  • 聚焦網絡爬蟲/主題網絡爬蟲:選擇性地爬取主題相關的頁面
  • 增量式網絡爬蟲:對已下載網頁採起增量式更新/只爬取新產生或已經發生變化的網頁
  • 深層網絡爬蟲:內容不能經過靜態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
相關文章
相關標籤/搜索