摘要:蠻荒時代遇到加密的網頁爬取是將混淆之后的加密代碼強行還原為代碼,很累現在有了這個方便的庫,能夠輕松很多,轉工具移動端抓取替代網頁端不少網站移動端的接口訪問比網頁端簡單多,反爬也弱一些,比如拉鉤網。
什么是爬蟲用我自己的話來總結就是通過模擬客戶端訪問服務器獲取數據的工具。爬蟲的簡易模型如下:
網站服務器是我們要訪問的目標,主要用來制定訪問規則(也就是我們應該如何模擬可以訪問該服務器的用戶以及如何訪問網站上的數據)
爬蟲通過http或者https協議與網站服務器交互
我們做的主要工作是在定制爬蟲腳本,盡可能的模仿客戶端的訪問
本地存儲的選擇很多,可以是文件的形式,也可以存儲到數據庫中
爬蟲可能會涉及的技術羅列可以當做檢索的清單
圖片是我以前學習爬蟲的時候收藏的,具體來源已經記不得了
下面這張是簡易版的參考,打鉤的是我已經使用過和掌握的
爬蟲技巧分享
由于網站開發人員使用技術不同和網站運維人員對訪問的限制沒有固定的爬蟲模板,而且爬蟲是需要長期維護的工程,一旦網頁中的一個class屬性發生改變或者api接口參數變化都需要修改爬蟲。但是一些技巧是可以借鑒的。
robots.txtrobots.txt是與搜索引擎約定的君子協議,他能夠可我們提供一些網站的信息。 下面是掘金的robots.txt ,我們可以收獲以下信息
允許的User-agent是匹配所有,有時候爬蟲失效可能是UA的問題,這里也許能找到答案
Request-rate: 1/1 建議1秒鐘爬取一個頁面 (那我想你設置延時應該心里有數了)
Crawl-delay: 5 建議爬蟲詢問的頻率是5秒一次
Disallow 是不允許爬取的目錄,這里基本上可以告訴我們有哪些子路徑
User-agent: * Request-rate: 1/1 Crawl-delay: 5 Disallow: /timeline Disallow: /submit-entry Disallow: /new-entry Disallow: /edit-entry Disallow: /notification Disallow: /subscribe/subscribed Disallow: /user/settings Disallow: /reset-password Disallow: /drafts Disallow: /editor Disallow: /user/invitation Disallow: /user/wallet Disallow: /entry/*/view$ Disallow: /auth Disallow: /oauth Disallow: /zhuanlan/*");curl
curl是命令行下的文件傳輸工具,這里拿出來是因為發現了一個好的工具 curl.trillworks.com/#python 可以直接將curl腳本轉成python requests庫的請求方式。
使用方法: (1)打開chrome的開發者工具 (2)選擇想要訪問的鏈接,然后 copy -> copy as cURL(bash) (3)粘貼到上面的那個網址中就可以得到簡易爬蟲腳本
使用 Katalon Recorder
有時候我們會使用Selenium工具模擬瀏覽器進行數據爬取,但是苦于自己寫與瀏覽器交互的腳本。這里推薦一個工具 Katalon Recorder可以方便的產生交互腳本,在模擬搜索、模擬登陸、滾動、點擊的時候都很有效。是一個瀏覽器插件,chrome和Firefox都有。使用起來也很簡單
(1) 先new一個新的錄制
(2) 開始錄制 record,這時候你可以與網頁交互,這個插件會記錄你的操作(從加載網頁到停止錄制)
(3) 停止錄制之后,點擊export,選擇自己喜歡的語言導出就行
下面這一段是我們實際使用的時候需要用到的,這樣就不用自己去編寫交互腳本了
一種簡單的反爬技術
目前很多博客網站的next操作是根據上一次請求的最后一條數據的某個id作為下一次請求的參數,不仔細看還發現不了(也虧返回的json字段命名語義化),典型網站有簡書和掘金,文章列表頁,請求的時候是根據上一次請求的最后一篇文章的信息作為下一次獲取數據的請求參數。
js2py蠻荒時代遇到js加密的網頁爬取是將混淆之后的js加密代碼強行還原為py代碼,很累~~現在有了js2py這個方便的python庫,能夠輕松很多,js轉py工具
移動端抓取替代網頁端不少網站移動端的接口訪問比網頁端簡單多,反爬也弱一些,比如拉鉤網。 這里有一個知識點:不少網站在處理請求的時候會根據UA來判斷客戶端類型,然后返回PC端頁面或者移動端頁面(案例:拉鉤網) 利用這個,我們可以將chrome的開發者模式調節為手機模式,這樣就可以獲取到移動端的接口,你會發現頁面也簡潔了接口也簡單了~
兩個思考 為什么爬蟲要設置User-Agent注:隨著前端技術的發展,適配多端的頁面也開始流行,所以前端牛逼
統計訪問頻率的時候有一部分是依賴于ua
有時候需要根據ua返回不同的代碼
對于前端還需要拿去判斷使用兼容性代碼
host很多時候會設置HOST這個字段,其實可以這樣理解,我們訪問的時候使用的是域名,但是http協議訪問的時候使用的是ip,存在一臺服務器上有多個服務,這樣多個域名會解析成一個ip,當服務器接收到這個請求的時候他需要考慮由哪個服務來處理(正常是反向代理判斷請求的路徑然后正則匹配轉發請求),但是我自己假想了一下也可以用host來判斷轉發(這個啟發來源于Access-Control-Allow-Origin只能設置一個值,當需要設置多個值的時候我使用host字段+白名單來動態設置的)
作為筆記記錄!感謝您與我一起虛度時光
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7270.html
摘要:對的請求,也是要有一個了解,比如協議,請求方式,請求過程,結果狀態碼等。教程協議詳解經典面試題一個故事講完響應狀態碼上面提到響應狀態碼,在這里也簡單寫下。 勸了別人無數次,讓別人喝了雞湯,幫別人填坑,自己卻掉了坑 1.前言 在前端學習里面,很多人都是注重學習代碼(html,css,js)。或者是一些框架,庫(jquery,vue,react),或者是各種工具(webpack,gulp)...
摘要:對的請求,也是要有一個了解,比如協議,請求方式,請求過程,結果狀態碼等。教程協議詳解經典面試題一個故事講完響應狀態碼上面提到響應狀態碼,在這里也簡單寫下。 勸了別人無數次,讓別人喝了雞湯,幫別人填坑,自己卻掉了坑 1.前言 在前端學習里面,很多人都是注重學習代碼(html,css,js)。或者是一些框架,庫(jquery,vue,react),或者是各種工具(webpack,gulp)...
摘要:對的請求,也是要有一個了解,比如協議,請求方式,請求過程,結果狀態碼等。教程協議詳解經典面試題一個故事講完響應狀態碼上面提到響應狀態碼,在這里也簡單寫下。 勸了別人無數次,讓別人喝了雞湯,幫別人填坑,自己卻掉了坑 1.前言 在前端學習里面,很多人都是注重學習代碼(html,css,js)。或者是一些框架,庫(jquery,vue,react),或者是各種工具(webpack,gulp)...
摘要:勤學學習效率與效果取決于執行力。這一步學習的正確姿勢是在實踐操作中發掘問題,然后帶著問題找答案。拆分任務將目標分解成具體可執行的學習任務。勤學強大的執行力是學習的根本保障。分享復述檢驗學習成果,提高學習效果的最好方法。 showImg(https://segmentfault.com/img/bVbcPGZ?w=256&h=256); 前段時間和大家一起分享了一篇關于學習方法內容《大牛...
閱讀 2312·2021-11-17 09:33
閱讀 842·2021-10-13 09:40
閱讀 572·2019-08-30 15:54
閱讀 777·2019-08-29 15:38
閱讀 2416·2019-08-28 18:15
閱讀 2474·2019-08-26 13:38
閱讀 1840·2019-08-26 13:36
閱讀 2128·2019-08-26 11:36