前言
最近在做自然語言理解處理相關的東西,主要是資訊抽取方面的需求,由於沒有好的公開資料集用作訓練及測試,於是只能先自己去權威平臺上爬取收集資料,所以這就涉及到了爬蟲。
關於語言
寫爬蟲用什麼語言?由於我較熟且常用的大語言是 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
複製程式碼
然後根據需要編寫,
items.py
中定義欄位spiders
目錄下編寫爬蟲pipelines.py
儲存資料- 其他需求
以上完了直接scrapy crawl my_spider
就開始爬。
遇到有js怎麼辦
現在很多網站都會需要執行js邏輯段,很多時候不執行js的邏輯就無法爬取,比如有些用js生成訪問key等等,這時一般有三個思路解決:
- 硬翻譯,就是死啃js原始碼,看懂邏輯後再翻譯成爬蟲語言實現一遍。
- 使用js執行引擎庫,很多語言都有js引擎庫,這時就把js邏輯交由庫來實現,省掉了自己去搞js邏輯的工作,效果很理想。這種方式效率高,但有時有些網站訪問需要的引數很多而且獲取很麻煩,用這種方式代價較大。
- 調瀏覽器方式,這種方式其實是完全模擬了人工操作,它需要開啟瀏覽器,然後通過指令碼自動操作頁面上的各個元素,從而實現抓取資料,比如讓他自動翻頁,自動下載等。這種方式效率明顯低,但它基本不用自己去研究裡面的各種引數,實現代價小。工具比如有selenium。
小結
在語言方面,在實現方式上面,根據不同的人,根據不同的工程需求及場景都是可以有不同的選擇,這些都需要我們自己去思考然後選擇一個適合該專案的方案。切忌手上有一個錘子就哪裡看起來都像釘子。
-------------推薦閱讀------------
------------------廣告時間----------------
公眾號的選單已分為“分散式”、“機器學習”、“深度學習”、“NLP”、“Java深度”、“Java併發核心”、“JDK原始碼”、“Tomcat核心”等,可能有一款適合你的胃口。
鄙人的新書《Tomcat核心設計剖析》已經在京東銷售了,有需要的朋友可以購買。感謝各位朋友。
歡迎關注: