❶ python爬取大量數據(百萬級)
當用python爬取大量網頁獲取想要的數據時,最重要的問題是爬蟲中斷問題,python這種腳本語言,一中斷
進程就會退出,怎麼在中斷後繼續上次爬取的任務就至關重要了。這里就重點剖析這個中斷問題。
第一個問題: 簡單點的用動態代理池就能解決,在爬取大量數據的時候,為了速度不受影響,建議使用一些緩
存的中間件將有效的代理 ip 緩存起來,並定時更新。這里推薦 github 這個倉庫
https://github.com/jhao104/proxy_pool , 它會做ip有效性驗證並將 ip 放入 redis ,不過實現過於復雜
了,還用到了 db ,個人覺得最好自己修改一下。困難點的就是它會使用別的請求來進行判斷當前的ip是否
是爬蟲,當我們過於聚焦我們的爬蟲請求而忽略了其他的請求時,可能就會被伺服器判定為爬蟲,進而這個ip
會被列入黑名單,而且你換了ip一樣也會卡死在這里。這種方式呢,簡單點就用 selenium + chrome 一個一個
去爬,不過速度太慢了。還是自己去分析吧,也不會過復雜的。
第二個問題: 網路連接超時是大概率會遇到的問題,有可能是在爬取的時候本地網路波動,也有可能是爬
取的服務端對ip做了限制,在爬取到了一定量級的時候做一些延遲的操作,使得一些通用的 http 庫超時
( urllib )。不過如果是服務端動的手腳一般延遲不會太高,我們只需要人為的設置一個高一點的
timeout 即可(30 秒),最好在爬取開始的時候就對我們要用的爬取庫進行一層封裝,通用起來才好改
動。
第三個問題: 在解析大量靜態頁面的時候,有些靜態頁面的解析規則不一樣,所以我們就必須得做好斷點
續爬的准備了( PS : 如果簡單的忽略錯誤可能會導致大量數據的丟失,這就不明智了)。那麼在調試的過
程中斷點續爬有個解決方案,就是生產者和消費者分離,生產者就是產生待爬 url 的爬蟲,消費者就是爬取
最終數據的爬蟲。最終解析數據就是消費者爬蟲了。他們通過消息中間件連接,生產者往消息中間件發送待
爬取的目標信息,消費者從裡面取就行了,還間接的實現了個分布式爬取功能。由於現在的消費中間件都有
ack 機制,一個消費者爬取鏈接失敗會導致消息消費失敗,進而分配給其他消費者消費。所以消息丟失的
概率極低。不過這里還有個 tips , 消費者的消費超時時間不能太長,會導致消息釋放不及時。還有要開啟
消息中間價的數據持久化功能,不然消息產生過多而消費不及時會撐爆機器內存。那樣就得不償失了。
第四個問題: 這種情況只能 try except catch 住了,不好解決,如果單獨分析的話會耗費點時間。但在
大部分數據 (99%) 都正常的情況下就這條不正常拋棄就行了。主要有了第三個問題的解決方案再出現這
種偶爾中斷的問就方便多了。
希望能幫到各位。
❷ 有朋友寫過用python定時頂貼的爬蟲嗎
如果你熟悉python的話,你可以自己編爬蟲來抓取評價;如果覺得時間成本高,可以用採集工具,市面上採集功能有幾個,比如集搜客、網路礦工、狂采等,可以用集搜客
因為是免費的,在官網可以下現成的規則,淘寶天貓搜索列表、商品詳細等;再簡單一點,付費定製數據了。
❸ python爬蟲是什麼
Python爬蟲是指在某種原因進行互聯網請求獲取信息
❹ python可以做到自動抓取互聯網上的新聞更新到網站嗎
理論上完全可以實現,相應的技術方案也是比較成熟的。不知道需要爬取的網站內容復雜不復雜的。目前我想到的方案是藉助爬蟲框架,數據存儲可利用mysql,mongodb之類的。打個比方,這是我用scrapy爬取詩詞網站的數據,臘純然後存儲到Mongodb中,就是缺少一部更新。
我們可以設定一個任務,任務可以是每1分鍾更新一下爬取數據,這樣就可以做到對應網站數據的更新,至於自身網站數據的更新,因為是客戶端發起的,所以,只要做到伺服器商數汪帶據更新了,客戶端就可以看到最新的數據,當然,需要注意相應的緩存技術的影響。
總的來說,爬取網站的數據然後更新到網站,是完全可以實現的。主要是看出於什麼的目的,以及爬輪陵咐取的網站的復雜性問題。