python網(wǎng)絡(luò)爬蟲-2019年我破解企業(yè)工商數(shù)據(jù)+商標(biāo)網(wǎng)+建筑招標(biāo)網(wǎng)數(shù)據(jù)-爬蟲技術(shù)分享
最近在深入研究人工智能“深度學(xué)習(xí)”TensorFlow技術(shù),采用AI技術(shù)做數(shù)據(jù)爬蟲和數(shù)據(jù)挖掘的工作,AI技術(shù)主要是建立爬蟲的模型、深度訓(xùn)練機器人、樣本數(shù)據(jù)驗證模型、最后我們的機器人就可以像我們千軍萬馬的真人在做爬蟲的工作了,解決了爬蟲界遇到的各種驗證碼、封IP、加密的問題,可以說2019年是大數(shù)據(jù)的發(fā)起年,很多朋友都找我?guī)兔νㄟ^我的爬蟲技術(shù)解決數(shù)據(jù)源的問題,我們知道不管是做人工智能還是做大數(shù)據(jù)前提就是需要有數(shù)據(jù),所以大數(shù)據(jù)是目前非?;鸬男袠I(yè),也是很多有眼光的人進軍大數(shù)據(jù)創(chuàng)業(yè)的原因!
二、工商網(wǎng)-企業(yè)數(shù)據(jù)-python數(shù)據(jù)挖掘技術(shù)分享(全國企業(yè)工商數(shù)據(jù)46個緯度的挖掘技術(shù))
因為一直研究深度爬蟲前沿技術(shù),最近有幾個創(chuàng)業(yè)的朋友找我?guī)兔⑵髽I(yè)大數(shù)據(jù)庫和政策庫大數(shù)據(jù),因為我前段時間剛剛幫朋友完成了“天謀查和企謀查”企業(yè)庫數(shù)據(jù)的分布式爬蟲系統(tǒng)的研發(fā),解決了封IP技術(shù)和驗證碼破解、vip模擬登陸爬數(shù)據(jù)問題,其中企業(yè)工商數(shù)據(jù)我當(dāng)時挖掘的數(shù)據(jù)緯度包含46個數(shù)據(jù)緯度,每一個緯度就是一個數(shù)據(jù)表。
利用爬蟲技術(shù),實現(xiàn)那么多企業(yè)數(shù)據(jù)的網(wǎng)絡(luò)數(shù)據(jù)挖掘,需要足夠多的服務(wù)器和大數(shù)據(jù)搜索引擎架構(gòu),首先我對企業(yè)進行了按城市維度進行分庫,全國每個城市都建立一個自己的數(shù)據(jù)庫,然后自己利用Python爬蟲技術(shù)+企業(yè)詞庫+代理IP池+分布式多進程的技術(shù)架構(gòu)開發(fā)了一套“企業(yè)大數(shù)據(jù)深度挖掘系統(tǒng)”。我們目前比較流行的數(shù)據(jù)挖掘技術(shù)的開發(fā)語言就是python,因為python擁有非常完整的各種庫可以直接使用,比如: 圖像識別庫、requests庫等等。
2.1 工商企業(yè)大數(shù)據(jù)面臨的問題:
其實我破解爬取天某查、企某查這些網(wǎng)站做企業(yè)大數(shù)據(jù)深度挖掘系統(tǒng)的研發(fā)的時候需要解決以下三個問題:
1 破解驗證碼 完成vip自動登錄 采集到完整的vip數(shù)據(jù)
2 數(shù)據(jù)的結(jié)構(gòu)化和數(shù)據(jù)清洗,把數(shù)據(jù)清洗到數(shù)據(jù)庫
3 數(shù)據(jù)的批量分布式、多進程、 多任務(wù)的爬取 解決全量爬取速度問題
2.2問題解決方案分享:
因為像天某查、企某查這種網(wǎng)站,如果不是vip會員登陸 ,手機號碼和郵箱這些比較重要的數(shù)據(jù)我們是看不到的,都是需要用vip登陸才能看到,所以要拿到完整的數(shù)據(jù)就需要破解vip登陸,拿到vip的完整數(shù)據(jù),一旦把vip破解了就像闖入無人空曠的平原想拿什么數(shù)據(jù)就拿什么數(shù)據(jù)了。下面的問題就是如何解決全量爬取數(shù)據(jù)問題,那么多企業(yè)數(shù)據(jù)我想一個月全部完成可以嗎?從技術(shù)角度是100%可以的,只要我們把程序架構(gòu)做成分布式+多進程+多任務(wù)就可以實現(xiàn)想爬多少就爬多少,但是有一個問題就是我們的需要服務(wù)器需要足夠多哦,否則你一臺電腦開100個進程也沒有用速度也就是那么一點了。分布式就是爬蟲程序部署放到10臺電腦去,如果你實在沒有電腦就到網(wǎng)吧去,把爬蟲端在網(wǎng)吧電腦去行幾天估計全部爬完了,這樣快速解決全量爬取的問題。所以我當(dāng)時在開發(fā)企業(yè)工商大數(shù)據(jù)深度挖掘系統(tǒng)的時候系統(tǒng)架構(gòu)我分為了 爬蟲端+數(shù)據(jù)庫+代理IP池+cookies池+企業(yè)詞庫+數(shù)據(jù)管理后臺,等一整套的數(shù)據(jù)挖掘、數(shù)據(jù)清洗、數(shù)據(jù)存儲、數(shù)據(jù)管理的解決方案。
(歡迎對爬蟲技術(shù)和大數(shù)據(jù)挖掘感興趣朋友加我qq:2779571288)
三、商標(biāo)網(wǎng)-Python爬蟲破解技術(shù)分享:
因為一直從事數(shù)據(jù)深度挖掘、網(wǎng)絡(luò)深度爬蟲的技術(shù)研究,從幫電商公司做過淘寶店鋪商品的一鍵搬家,把淘寶商品通過爬蟲技術(shù)一鍵復(fù)制到您的網(wǎng)站去,到通過AI圖像識別技術(shù)做競品分析、再導(dǎo)通過網(wǎng)絡(luò)爬蟲技術(shù)做幫朋友做的輿情監(jiān)控、再到企業(yè)工商大數(shù)據(jù)的深度挖掘、商標(biāo)網(wǎng)的大數(shù)據(jù)挖掘等等幾乎國內(nèi)核心的比較大的網(wǎng)站反爬機制都摸清了一遍,再眾多網(wǎng)絡(luò)深度挖掘技術(shù)的過程中,不同的網(wǎng)站才有不同的反爬技術(shù),比如天某查 才有的是vip登陸+驗證碼技術(shù),再比如淘寶采用的是封IP的反爬技術(shù),不登錄也可以搜索到商品數(shù)據(jù),但是那么多網(wǎng)站中度商標(biāo)網(wǎng)是最難爬取的一個,說起商標(biāo)網(wǎng)難爬并不代表它的反爬技術(shù)有多牛,其實商標(biāo)網(wǎng)的反爬技術(shù)還沒有天某查的牛,主要是商標(biāo)網(wǎng)犧牲了用戶體驗來攔截爬蟲大量爬取它數(shù)據(jù),商標(biāo)網(wǎng)的反爬技術(shù)包含下面2部分:
3.1 商標(biāo)網(wǎng)-采取的url訪問跟蹤加密技術(shù):
商標(biāo)網(wǎng)犧牲了用戶體驗,每次對商標(biāo)注冊號查詢必須先進入搜索頁面然后搜索注冊號去爬取,如果你直不經(jīng)過主頁和列表頁就直接訪問詳細頁面是直接被封的,也就是這個詳細頁的URL是經(jīng)過首頁的訪問cookie+列表頁cookie+過期時間的跟蹤加密處理的,所以要爬取它的數(shù)據(jù)不得不從這個模擬搜索注冊號然后模擬點擊進入詳細頁然后爬取詳細頁和商標(biāo)流程頁面的數(shù)據(jù),這樣我們一樣是爬取得到數(shù)據(jù),只是爬取速度有點慢,因為我們必須需要遵循它現(xiàn)在進入搜索頁去模擬搜索注冊號然后再模擬點擊進入詳細頁,這樣速度就慢很多。
3.2 商標(biāo)網(wǎng)-采取了封IP反爬技術(shù):
商標(biāo)網(wǎng)除了跟蹤訪問路徑url外,還采取了封IP技術(shù),也就是當(dāng)你不斷的去模擬搜索注冊號或者模擬搜索公司得到詳細頁數(shù)據(jù)的時候,它會監(jiān)控您的IP,如果發(fā)現(xiàn)您的IP操作太頻繁直接把您IP拉黑封掉,你再也打開不了商標(biāo)網(wǎng)站了。需要過一天或者一段時間才給您重新放出來。所以解決這個封IP很簡單,我當(dāng)時做商標(biāo)網(wǎng)大數(shù)據(jù)深度挖掘系統(tǒng)的架構(gòu)的時候,系統(tǒng)架構(gòu)上包含了: 爬蟲端+代理IP池+模擬AI人工智能技術(shù)+多進程 解決它的反爬問題以及爬取速度的問題。下面給大家解釋一下代理IP池:
代理IP池:也許您會問這個代理IP池是做什么,又是怎么實現(xiàn)的呢?我們在爬網(wǎng)站的時候,需要用代理ip不能用我們自己電腦的IP去爬,原因是在你電腦直接運行代碼那么爬蟲的IP就是你電腦的IP ,如果一直頻繁的去采集對方的網(wǎng)站,那么對方會檢測到您的IP直接把您的IP列入黑名單導(dǎo)致你以后在也采集不了了。所以我所有的批量采集爬蟲都采用代理IP去爬的,python怎么采用代理IP呢?其實很簡單就那么一行代碼就解決:
resp = requests.get(url, headers=self.headers, timeout=20, proxies=proxy)
我們調(diào)用的是 requests的get方法 里面有url、和headers以及 , proxies代理IP設(shè)置的參數(shù)。
url:就是我們采集的目標(biāo)網(wǎng)站地址
headers:就是我們模擬訪問對方網(wǎng)站時候需要模擬的頭參數(shù)(這個參數(shù)怎么來呢,其實很簡單,直接用火狐打開對方網(wǎng)站 查看網(wǎng)絡(luò)里面有和請求頭 那些參數(shù)復(fù)制過來即可)
Proxies:就是我們的設(shè)置我們的代理IP,代理IP是什么意思呢?代理服務(wù)器的工作機制很象我們生活中常常提及的代理商,假設(shè)你的機器為A機,你想獲得的數(shù)據(jù)由B機提供,代理服務(wù)器為C機,那么具體的連接過程是這樣的。 首先,A它與C機建立連接把請求發(fā)給C,C機接收到A機的數(shù)據(jù)請求后馬上與B機建立連接,下載A機所請求的B機上的數(shù)據(jù)到本地,再將此數(shù)據(jù)發(fā)送至A機,完成代理任務(wù)。這樣下載對方網(wǎng)站的數(shù)據(jù)的是代理服務(wù)器,而這個代理服務(wù)器IP是隨機變動,對方就抓不到是誰一直采集他的數(shù)據(jù)了。那這個代理ip我們清楚了,這個ip代理池又是什么呢?我們運行我們的python程序的時候,每秒發(fā)一個http請求去爬對方網(wǎng)站一次,請求一次需要一個IP,那么這個ip怎么來呢?我們可以網(wǎng)上購買第三方那種ip接口,比如:每10秒中會返回1個IP給我們用,如果我們每次爬數(shù)據(jù)都先要調(diào)取代理IP接口得到IP了再去爬對方網(wǎng)站 那么這個效率和代碼質(zhì)量就低了,因為人家是10秒中才一個IP,您的程序速度和效率就直接卡在因為代理IP接口控制問題了,所以這個時候您需要改進代理IP代碼架構(gòu),首先每10秒中讀取代理IP接口得到的IP 緩存到reis去,并且設(shè)置60秒過期,那么這個redis就會形成一個代理IP池了,您的程序代碼爬對方網(wǎng)站時候直接從redis讀取IP去爬,這樣速度就快了,程序架構(gòu)就優(yōu)化了。
采集速度太頻繁了,會被封IP問題 怎么解決
當(dāng)我們發(fā)出去的http請求到天謀查網(wǎng)站的時候,正常情況下返回200狀態(tài),說明請求合法被接受,而且會看到返回的數(shù)據(jù),但是天謀查有自己的一套反爬機制算法,如果檢查到同一個IP來不斷的采集他網(wǎng)站的數(shù)據(jù),那么他會被這個IP列入異常黑名單,您再去采集它網(wǎng)站數(shù)據(jù)的時候,那么就永遠被攔截了。怎么解決這個問題呢,其實很簡單,沒有錯用代理IP去訪問,每一次請求的時候都采用代理IP方式去請求,而且這個代理IP是隨機變動的,每次請求都不同,所以用這個代理IP技術(shù)解決了被封的問題。
自己搭建代理池ip
做爬蟲技術(shù)都知道,代理IP的質(zhì)量決定了爬蟲的效率,要想爬快一點,必須選擇質(zhì)量好,高匿名、不重復(fù)、時間長的IP,在選擇代理IP的時候,市場價格好的搭理IP一般是6000/月,所以當(dāng)時為了避免這個費用成本,就自己搭建了自己IP代理池,利用技術(shù)優(yōu)勢節(jié)省了一大截成本。
爬天某查是怎么知道我們使用代理IP的呢?
想知道代理IP的問題,我先要理解清楚 代理IP里的“透明”“匿名”“高匿”分別是指什么:
透明代理IP::就是我們用這個代理IP去采集天眼查的時候,不會隱藏我們自己的IP,我們的IP一種是暴漏透明的,那么天某查會很快識別到同一個客戶端IP重復(fù)訪問采集它的網(wǎng)站數(shù)據(jù),就會把這個IP拉入黑名單做個標(biāo)記,下次你在去采集的時候直接被封了。
普通匿名代理IP:能隱藏我們客戶機的真實IP,但是有一個壞處就是但會改變我們的請求信息,天某查有可能會認為我們使用了代理。不過使用此種代理時,雖然被訪問的網(wǎng)站不能知道你的ip地址,但仍然可以知道你在使用代理,當(dāng)然某些能夠偵測ip的網(wǎng)頁仍然可以查到你的ip,所以這種IP是不適合去采集天眼查的數(shù)據(jù)的。
高匿名代理IP: 這種IP是不會改變客戶機的請求,這樣在服務(wù)器看來就像有個真正的客戶用瀏覽器在訪問它,這時客戶的真實IP是隱藏的,服務(wù)器端(天眼查)不會認為我們使用了代理,我們在采集天眼查的應(yīng)該選用這種高匿名的IP,那么哪里去找這種代理IP呢,下面的小結(jié)將會給大家介紹。
想要解決繞過天眼查驗證碼爬數(shù)據(jù)的問題,首先我們要分析是在什么情況下才會出現(xiàn)驗證碼,天眼查是通過以下兩種方式進行識別我們是否瀏覽器訪問還是爬蟲訪問:
怎么知道天某查封了我們的IP呢?
您去爬天某查的時候,如果您的IP被封或者不正常,天某查就會返回登錄頁面,出現(xiàn)登錄界面就說明您的ip被封了,或者被監(jiān)控到異常了。所以我們在爬數(shù)據(jù)的時候,用正則匹配一下是否有注冊登錄的界面html標(biāo)簽字符,如果出現(xiàn)登錄界面馬上重新?lián)Q一個IP重新請求,就一直執(zhí)行循環(huán)直到換到正常的可用的IP為止即可。
為什么采用代理IP后還是被封了?
我們做爬蟲的時候不能使用自己電腦的IP去循環(huán)采集天某查網(wǎng)站否則會直接封IP,或者出現(xiàn)驗證碼,要解決這個問題其實很簡單就是采用動態(tài)的代理IP,但是呢很多人用代理IP還是出現(xiàn)會封,其實原因是您用的這個代理IP質(zhì)量不行,或者你用的是那種、免費的代理IP。使用代理IP還是被封會有以下原因:
(1) 您的代理IP失效時間太短,還沒成完一個http請求就失效了,導(dǎo)致永遠被封或者無效
(2) 您的代理IP網(wǎng)絡(luò)不到達不通導(dǎo)致
(3) 你的代理IP不是高匿名的,直接被識別出來
(4) 您的代理IP已經(jīng)被其他人用過爬天某查了,早被列入黑名單,導(dǎo)致你永遠IP被封。
(5) 你是不是老是一直用幾個代理IP循環(huán)去爬?正確做法是每個請求都隨機換不同IP,所以您需要網(wǎng)上選那種不限制數(shù)量的代理IP,而不是固定幾個IP。
4、爬天某查應(yīng)該選用什么樣的代理IP?
建議您的代理IP應(yīng)該滿足以下要求:
(1) 、高匿名,普通匿名不行,一定是高匿名
(2) 、有效期時間長,至少2分鐘之內(nèi)是有效的
(3) 、不重復(fù),至少在30天內(nèi)不重復(fù)的IP
、不限量,每天IP的數(shù)據(jù)不限制,隨機改變。
時間有限,先分享到這里,我得寫代碼去…
本文為張軍原創(chuàng)文章,轉(zhuǎn)載無需和我聯(lián)系,但請注明來自張軍的軍軍小站,個人博客http://www.sfpk123.com
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
