摘要:近來知乎上如雨后春筍般冒出了大把大把的爬蟲教程。一個爬蟲教程的案例三個月之后還能有效已經(jīng)是萬幸了。不過仍然要說明,即使經(jīng)過多次驗(yàn)證,也無法保證一個的絕對可用性。這是個概率問題,工具的作用只是盡可能提高概率。
近來知乎上如雨后春筍般冒出了大把大把的爬蟲教程。這是好事,學(xué)了 Python 基礎(chǔ)的同學(xué)們可以很輕松地搜出許多練手的例子。不過我不是針對誰,我是說網(wǎng)上絕大多數(shù)的爬蟲教程,其實(shí)都缺乏可操作性。
是的,也包括我自己寫過的。
主要原因有兩點(diǎn):
教程是死的,網(wǎng)站是活的。頁面會改版,接口會更新。一個爬蟲教程的案例三個月之后還能有效已經(jīng)是萬幸了。比如我自己教程里的查天氣案例,接口改動過很多次,數(shù)據(jù)也早就不更新。但發(fā)出去的文章被轉(zhuǎn)發(fā)幾次后就很難再維護(hù)更新了。我也只能在自己的論壇上發(fā)布更新消息和問題答疑:【Python 第43課】 查天氣(1)。
但凡數(shù)據(jù)比較有價值的網(wǎng)站,一定都會有反爬措施,既是對數(shù)據(jù)的保護(hù),也是避免機(jī)器流量干擾到正常用戶的體驗(yàn)。所以光是寫個網(wǎng)絡(luò)請求,幾乎不可能成功拿到數(shù)據(jù)。反爬措施千千萬,應(yīng)對反爬的手段萬萬千,這就是個不停斗智斗勇的過程,不存在一個教程就教會的萬金油方法。
反爬里面最常見的一種手段就是,判斷你的請求頻率。如果你短時間內(nèi)發(fā)送了大量的請求,甭管你是不是人,先封你賬號或 IP 一段時間再說。所以,這就成了一個矛盾的地方:爬得太快會被封,爬得太慢又很耗時間。一般教程也許會說句:想要提升抓取效率并且降低被封的風(fēng)險,可以使用代理 IP。然而這話說著倒輕松,網(wǎng)上免費(fèi)的代理 IP 也不少,但每次找來能用的卻沒幾個。總不至于每次為了寫點(diǎn)小練習(xí)還去花錢買很多付費(fèi)代理吧。況且現(xiàn)如今你真要買,也還未必能順利買到可用的。
于是我們決定自己動手,一勞永逸地解決這個老大難問題:實(shí)現(xiàn)一個自動獲取可用代理 IP 的接口。
基本思路還是從網(wǎng)上的幾大免費(fèi)平臺獲取 IP 地址,不同的是我們定期去檢測 IP 的可用性。在調(diào)用接口時,提供可用性最高的 IP 地址列表。
網(wǎng)頁上列出了幾十個最新的推薦 IP,只是臨時找?guī)讉€做測試,可直接訪問查看。
網(wǎng)頁地址:http://lab.crossincode.com/pr...
API 接口地址:http://lab.crossincode.com/pr...
請求方法:GET
頻率限制:不高于3秒1次
請求示例:
獲取 5 個 IP
http://lab.crossincode.com/pr...
獲取 5 個 HTTPS 的 IP
http://lab.crossincode.com/pr...
返回結(jié)果示例:
{ "proxies": [ { "http": "117.90.0.225:9000" }, { "http": "186.154.146.26:8080" }, { "http": "175.155.25.27:808" }, { "http": "124.88.67.52:843" }, { "http": "119.5.0.7:808" } ], "code": 1 }
于是,在你做爬蟲練習(xí)時,只要通過接口獲取幾個 IP,作為你請求的 proxy,即可大大提高抓取的效率。目前我們自己的爬蟲項(xiàng)目都在使用此接口。
不過仍然要說明,即使經(jīng)過多次驗(yàn)證,也無法保證一個 IP 的絕對可用性。不同時間不同地域不同網(wǎng)絡(luò)都有可能導(dǎo)致請求超時或失效。所以你的代碼中也還是需要自己做好相應(yīng)的異常處理。這是個概率問題,工具的作用只是盡可能提高概率。
我們不生產(chǎn) IP,我們只是互聯(lián)網(wǎng)的搬運(yùn)工。
完整的接口參數(shù)說明,以及項(xiàng)目的源代碼,可在公眾號(Crossin的編程教室)后臺回復(fù) IP。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40830.html
摘要:文檔寫得很清楚,也有中文版,你只要看了最初的一小部分,就可以在代碼中派上用場了。 關(guān)于爬蟲的案例和方法,我們已講過許多。不過在以往的文章中,大多是關(guān)注在 如何把網(wǎng)頁上的內(nèi)容抓取下來 。今天我們來分享下,當(dāng)你已經(jīng)把內(nèi)容爬下來之后, 如何提取出其中你需要的具體信息 。 網(wǎng)頁被抓取下來,通常就是 str 字符串類型的對象 ,要從里面尋找信息,最直接的想法就是直接通過字符串的 find 方法 ...
摘要:注一篇去年的舊文,發(fā)現(xiàn)沒在知乎發(fā)過,過來補(bǔ)個檔。于是就有了我們這個小項(xiàng)目電影票比價網(wǎng)在我們這個網(wǎng)頁上,會展示出當(dāng)前熱映的電影。涉及到模塊主要是用來匹配不同渠道的影院信息代碼結(jié)構(gòu)項(xiàng)目主要有三塊使用豆瓣每日更新上映的影片列表。 注:一篇去年的舊文,發(fā)現(xiàn)沒在知乎發(fā)過,過來補(bǔ)個檔。有個小問題是項(xiàng)目中淘票票的網(wǎng)頁反爬提升且變動較多,目前暫不可用了。 時常有同學(xué)會問我類似的問題:我已經(jīng)學(xué)完了 Py...
摘要:比如分鐘破譯朋友圈測試小游戲文章里用的方法但有些根本就沒有提供網(wǎng)頁端,比如今年火得不行的抖音。所以常用的方式就是通過在電腦上裝一些抓包軟件,將手機(jī)上的網(wǎng)絡(luò)請求全部顯示出來??偨Y(jié)下,重點(diǎn)是的抓取,關(guān)鍵是配置代理證書,難點(diǎn)是對請求的分析。 爬蟲的案例我們已講得太多。不過幾乎都是 網(wǎng)頁爬蟲 。即使有些手機(jī)才能訪問的網(wǎng)站,我們也可以通過 Chrome 開發(fā)者工具 的 手機(jī)模擬 功能來訪問,以便...
摘要:添加插件開啟開發(fā)者模式,加載自己建的插件目錄即可測試現(xiàn)在到搶紅包的頁面刷新后就可以看到效果了,建議不要刷太頻繁,我的已經(jīng)被封了。 原文:http://laker.me/blog/2015/12/10/15_12010_auto_red_packet/歡迎交換友鏈 Lakers Blog--進(jìn)擊的程序媛Github:https://github.com/younglaker微博: 江小湖...
摘要:但線程過多也許會觸發(fā)圖床的保護(hù)機(jī)制,同時也和自己電腦配置有關(guān),這個得結(jié)合實(shí)際情況考慮了。圖床限制這個是圖片過多一定是大概率出現(xiàn)的,上傳請求的頻次過高很容易被限流封。 showImg(https://segmentfault.com/img/remote/1460000019118030?w=1920&h=1016); 前言 經(jīng)過幾個小伙伴的提醒,發(fā)現(xiàn)個人博客中的許多圖片都裂了無法訪問;...
閱讀 1864·2021-11-15 11:39
閱讀 1073·2020-12-03 17:06
閱讀 729·2019-12-27 11:42
閱讀 3267·2019-08-30 13:59
閱讀 1452·2019-08-26 13:22
閱讀 3281·2019-08-26 12:15
閱讀 2470·2019-08-26 10:22
閱讀 1557·2019-08-23 18:40