如今爬蟲工做者愈來愈多,那麼今天就講講就從解析數據和模擬器好好說說爬蟲。
本來的稱呼就是應該是叫解析網頁,可是目前移動數據已經成爲平常生活中不可或缺的數據走向,因此解析數據這個詞來形容
會更加精準,解析數據。解析數據就是說當咱們訪問一個網址的時候,服務器就該網站把內容反饋給了我,我應該如何的把我
真正須要的數據提取出來。當服務器返回給咱們的是html的時候,我須要提取到具體哪一個 DIV 下面的內容;當服務器返回給我
的是 XML 時,我也須要提取某個標籤下面的內容。
咱們採用的最原始的方式就是使用「正則表達式」,「正則表達式」是一門通用的技術,大多數語言中都具有相似的庫巴,
在 Python 中對應的是 re 模塊,不過,正則表達式很是難於理解。通常狀況下不建議使用。Python 中的 BeautifulSoup 和
Requests-HTML 很是適合經過標籤進行內容提取。
模擬器
爬蟲的設計者在設計爬蟲的時候須要注意一個很難堪的現狀:Web 端愈來愈 JS 化,手機端 key 值校驗愈來愈複雜以至沒法破解。這時候只能選擇模擬器來徹底假扮成用戶了。
網頁端常見的模擬瀏覽器工具備 Selenium,這是一個自動化測試工具,它能夠控制瀏覽器做出點擊,拖拉等動做,總之就是代替人來操做瀏覽器,一般搭配 PhantomJS 來使用。
PhantomJS 是一個基於WebKit的服務器端 JavaScript API,它基於 BSD開源協議發佈。PhantomJS 無需瀏覽器的支持便可實現對 Web 的支持,且原生支持各類Web標準,如DOM 處理、JavaScript、CSS選擇器、JSON、Canvas 和可縮放矢量圖形SVG。不過目前好像已經中止維護啦。
不過還好,Selenium 一樣能夠操做 FireFox 和 Chrome 等瀏覽器。
除了 web 端,手機端 APP一樣可使用模擬器技術來徹底模擬人的動做。
當須要併發的時候,咱們手頭上沒有足夠多的真機用來爬取,就要使用 genymotion 這樣的虛擬機,使用起來跟 linux 虛擬機是同樣的,下載安裝包配置就能夠了。
爬蟲的併發和分佈式
Python 做併發爬蟲實際上毫無優點,不過如以前所講,過高併發的爬蟲對別人的服務器影響太大了,聰明的人不可能不做限制,因此高併發語言實際上優點也不大。Python 3.6 之後異步框架 Aiohttp 配合 async/await 語法也很是好用的,能在效率上提高很多。
總結
爬蟲並非一件特別簡單得事情,可是要面臨得困難也有不少。
要作好一個爬蟲要注意事項有:
URL 的管理和調度。聰明的設計每每容錯性很高,爬蟲掛掉之後形成的損失會很小。
數據解析。多學點正則表達式老是好事情,內心不慌。
模擬器。這樣作的效率有點低,並且電腦不能作其餘事情。