設置合理的user-agent正則表達式
一些站點會把這個看成很基本的過濾條件,咱們就不碰壁了,直接找個瀏覽器粘貼一個,有些文章介紹用一些爬蟲的user-agent,可是對方可能會有相關的爬蟲服務器的 iplist,不過這種狀況很少見,能夠試一下。瀏覽器
設置合理的爬取間隔服務器
過於頻繁的流量很容易被監控到,固然除了一些沒人管的站點,一般請求ip會被對方禁用一段時間,嚴重的可能會拉入黑名單,這就浪費掉一個 ip 地址了。若是你不是很急的話,我通常設置個 1 到 10 秒的隨機訪問間隔,單線程執行,慢慢爬。通常來講不少站點都能接受這樣的方式,也不會給對方運維人員形成壓力,若是還有限制同個 ip 的訪問次數,那咱們還有代理招。框架
須要登陸權限運維
有登陸就有註冊,之前不少註冊是須要驗證郵箱,經過SMTP協議讀取郵件內容實現自動化是個思路,前提你也要有不少郵箱地址,牛逼的你能夠本身搭建個郵件服務器,要多少有多少。如今不少是經過手機號碼的驗證碼了,這個就麻煩了,首先要有不少設備插不少sim卡接收短信,而後還要在這些設備上把數據傳到你運行的那臺機子解析出驗證碼才能把整個流程自動化。反正我是沒試過,通常我都是手工註冊幾個。異步
登陸的話就會簡單一些,把用戶名和密碼post上去以後根據服務端返回的Set-Cookie設置好相關請求頭就好了,甚至有些框架都幫你處理好了。若是須要驗證碼的話,出門左拐去購買破解驗證碼的接口或者本身實現吧,拿到憑證後就能夠在相關頁面裏面橫衝直撞了。固然,你也能夠像我同樣手動在瀏覽器上登陸,拿到Set-Cookie以後在進行後面的操做。工具
增量爬取post
若是爬的內容很是多,你永遠也不知道在何時就 GameOver 了,所以必定要保存好你的進度,一般來講抓取工做都很重,抓到半自然後從頭開始,It sucks ! 多寫一點代碼換來的好處是值得的。測試
代理魔法好線程
關於拉內容,這裏介紹的是終極大招了。有了代理服務器,你就至關於找到了多個幫你幹活的小弟,並且仍是遠程指揮,被封了也不會影響到你的本尊。
代理的來源:你能夠本身用工具去掃描全網找到可用的免費代理,也能夠像筆者同樣偷懶去購買一些可用的代理。
代理的使用策略:你可能擁有了便宜甚至免費的代理地址,可是這裏面不少可能都無法使用,或者如今能用,待會就不能用了,所以在使用以前應該測試一下,及時移除不能用的地址,提升效率。另外,注意不要用一個代理地址連續範圍,筆者的策略通常是每一個請求順序換一個代理地址,若是數量足夠多的前提下,你能夠儘量地提高你的爬取線程或者進程數,因爲每一個 ip 的訪問間隔足夠長,這樣也不會被封 ip 。
內容解析
在沒認識Jsoup以前,筆者通常經過正則表達式和字符串的處理來濾出想要的內容,若是你還在拼難寫的正則表達式,不妨能夠試一下 Jsoup 。
Ajax異步內容
如今不少單頁的應用都是先把 js 和基本的頁面框架先加載,而後在異步請求一些其餘的內容,好比不少的下拉到底部請求下一頁的列表數據。對於這樣的狀況,我建議仍是讀一下它的 js 代碼,而後模擬這個過程,這樣爬取效率會更高一些;另外也能夠selenium這樣的工具來模擬瀏覽器的執行,這個筆者還沒用過。
總結
抓取信息實際上是個攻與防的過程,總結規律,多測試和踐行你的想法,找到合適的策略。最後,善用工具,但行好事哈~