近期的爬蟲工作雜談

超人汪小建發表於2018-03-06

前言

最近在做自然語言理解處理相關的東西,主要是資訊抽取方面的需求,由於沒有好的公開資料集用作訓練及測試,於是只能先自己去權威平臺上爬取收集資料,所以這就涉及到了爬蟲。

關於語言

寫爬蟲用什麼語言?由於我較熟且常用的大語言是 java、c++ 和 python。所以用這三種語言寫爬蟲其實都可以很快寫出來,之前寫爬蟲較多用 java,現在覺得在小專案且要求快速實現的場景下用 python 效率還是很高的,畢竟python有很多工具包而且本身就是一門表達能力很強的語言。而如果對效能比較看重可以C++,較大大型企業級專案看中可擴充套件可維護則可以java。另外大點的專案也要綜合考慮下分散式叢集方面。

scrapy解決普通需求

python中一般常用Scrapy框架來實現爬蟲,上手很容易,通過scrapy startproject mySpider生成專案結構,如下,

D:\>scrapy startproject mySpider
New Scrapy project 'mySpider', using template directory ..
You can start your first spider with:
    cd mySpider
    scrapy genspider example example.com
複製程式碼

這裡寫圖片描述

然後根據需要編寫,

  1. items.py中定義欄位
  2. spiders目錄下編寫爬蟲
  3. pipelines.py儲存資料
  4. 其他需求

以上完了直接scrapy crawl my_spider就開始爬。

遇到有js怎麼辦

現在很多網站都會需要執行js邏輯段,很多時候不執行js的邏輯就無法爬取,比如有些用js生成訪問key等等,這時一般有三個思路解決:

  1. 硬翻譯,就是死啃js原始碼,看懂邏輯後再翻譯成爬蟲語言實現一遍。
  2. 使用js執行引擎庫,很多語言都有js引擎庫,這時就把js邏輯交由庫來實現,省掉了自己去搞js邏輯的工作,效果很理想。這種方式效率高,但有時有些網站訪問需要的引數很多而且獲取很麻煩,用這種方式代價較大。
  3. 調瀏覽器方式,這種方式其實是完全模擬了人工操作,它需要開啟瀏覽器,然後通過指令碼自動操作頁面上的各個元素,從而實現抓取資料,比如讓他自動翻頁,自動下載等。這種方式效率明顯低,但它基本不用自己去研究裡面的各種引數,實現代價小。工具比如有selenium。

小結

在語言方面,在實現方式上面,根據不同的人,根據不同的工程需求及場景都是可以有不同的選擇,這些都需要我們自己去思考然後選擇一個適合該專案的方案。切忌手上有一個錘子就哪裡看起來都像釘子。

-------------推薦閱讀------------

我的2017文章彙總——機器學習篇

我的2017文章彙總——Java及中介軟體

我的2017文章彙總——深度學習篇

我的2017文章彙總——JDK原始碼篇

我的2017文章彙總——自然語言處理篇

我的2017文章彙總——Java併發篇

------------------廣告時間----------------

公眾號的選單已分為“分散式”、“機器學習”、“深度學習”、“NLP”、“Java深度”、“Java併發核心”、“JDK原始碼”、“Tomcat核心”等,可能有一款適合你的胃口。

鄙人的新書《Tomcat核心設計剖析》已經在京東銷售了,有需要的朋友可以購買。感謝各位朋友。

為什麼寫《Tomcat核心設計剖析》

歡迎關注:

這裡寫圖片描述

相關文章