用python3爬蟲-教大家如何解決驗證碼的問題

Python爬蟲-2018年-我破解天眼查和啓信寶企業數據爬蟲--破解反爬技術那些事情

最近在自己用python3+mongdb寫了一套分佈式多線程的天眼查爬蟲系統,實現了對天眼查整個網站的全部數據各種維度的採集和存儲,主要是爲了深入學習爬蟲技術使用,並且根據天眼查網頁的數據結構建立了30個表來存儲30個維度的數據,很多做技術的朋友在爬天眼查的時候會遇到以下幾個問題,我把我的經歷和解決方案分享給大家。(需要爬蟲技術交流的朋友歡迎加我qq:2779571288)

#大數據爬蟲系統-主要包含這些維度

def get_all_info(soup, cid, company):

passmethod(get_base(soup, cid, company)) # 1、工商信息數據

passmethod(get_partner(soup, cid, company)) # 2、主要成員數據

passmethod(get_gudong(soup, cid, company)) # 3、股東信息數據

passmethod(get_invest(soup, cid, company)) # 4、對外投資數據

#passmethod(get_uplog(soup, cid, company)) # 5、變更記錄數據

passmethod(get_report(soup, cid, company)) # 6、公司年報數據

passmethod(get_branch(soup, cid, company)) # 7、分支機構數據

passmethod(get_rongzi(soup, cid, company)) # 8、融資歷史數據

passmethod(get_team(soup, cid, company)) # 9、核心團隊數據

passmethod(get_touzhi(soup, cid, company)) # 10、投資事件數據

passmethod(get_jingpin(soup, cid, company)) # 12、競品信息數據

passmethod(get_court_notice(soup, cid, company)) # 13、開庭公告數據

passmethod(get_laws(soup, cid, company)) # 14、法律訴訟數據

passmethod(get_court_report(soup, cid, company)) # 15、法院公告數據

passmethod(get_punish(soup, cid, company)) # 16、行政處罰數據

passmethod(get_zhaobiao(soup, cid, company)) # 17、招標數據

passmethod(get_zhaopin(soup, cid, company)) # 18、招聘數據數據

passmethod(get_swlevel(soup, cid, company)) # 19、稅務評級數據

passmethod(get_credit(soup, cid, company)) # 20、進出口信用數據

passmethod(get_certificate(soup, cid, company)) # 21、資質證書數據

passmethod(get_weixin(soup, cid, company)) # 22、微信公衆號信息

passmethod(get_pright(soup, cid, company)) # 23、知識產權數據

passmethod(get_soft(soup, cid, company)) # 24、軟件著作權數據

passmethod(get_pright2(soup, cid, company)) # 25、作品著作權數據

passmethod(get_site(soup, cid, company)) # 26、網站備案數據

passmethod(get_product(soup, cid, company)) # 27、產品信息數據

passmethod(get_zhuanli(soup, cid, company)) # 28、專利數據數據

print ('success!')

1、天眼查和啓信寶哪一個的數據更難爬呢?

其實在準備爬天眼查數據的時候,我對啓信寶、企查查類似的網站分佈從數據的完整性和數據的更新及時性分析了,結果個人覺得天眼查的數據比其他網站的要完整,數據維度要多一些,數據更新的時候也比較快,所以最後選擇了爬取天眼查裏面的企業數據。

2、天眼查的30個核心數據維度:

首先整個網站有主要核心數據有以下19大模塊:1基本信息、2法人代表、3主要成員、4股東&出資、5變更記錄、6公司年報、7司法風險、8輿情事件、9崗位招聘、10商品信息、11網站備案、12商標數據、13專利數據,、14 作品著作權軟件著作權、16對外投資關係、17稅務評級、18行政處罰、19進出口信用、20企業評級信用等十九個維度的企業數據,如果把這些數據爬下來,並且結構化,實現可以查詢可以檢索使用,可以導出到excel,可以生成企業報告,那麼需要建立數據庫來存儲這些數據,像這種非結構化的數據我們選擇mongdb數據庫是最合適的。

  1. 採集速度太頻繁了,會被封IP問題 怎麼解決

當我們發出去的http請求到天眼查網站的時候,正常情況下返回200狀態,說明請求合法被接受,而且會看到返回的數據,但是天眼查有自己的一套反爬機制算法,如果檢查到同一個IP來不斷的採集他網站的數據,那麼他會被這個IP列入異常黑名單,您再去採集它網站數據的時候,那麼就永遠被攔截了。怎麼解決這個問題呢,其實很簡單,沒有錯用代理IP去訪問,每一次請求的時候都採用代理IP方式去請求,而且這個代理IP是隨機變動的,每次請求都不同,所以用這個代理IP技術解決了被封的問題。

4 天眼查2個億的數據量怎麼存儲?需要多少的代理IP

我在寫爬蟲去爬天眼查的時候,剛開始使用網上的免費或者收費的代理IP,結果90%都被封號,所以建議大家以後採集這種大數據量網站的時候 不要使用網上免費的或者那種收費的IP,因爲這種ip幾秒鐘就會過期,意思就是你沒有采集網或者剛剛訪問到數據的時候,這個IP就過期了導致你無法採集成功,所以最後我自己搭建了自己的代理池解決了2個億天眼查數據的採集封IP問題。

5 天眼查網站數據幾個億數據的存儲

數據庫設計很重要,幾個億的數據存儲 數據庫設計很重要

我當時花了10天時間吧天眼查爬蟲系統全部開發完畢,可以每天爬去百萬條數據,30個維度的數據,數據爬下來後主要是數據的存儲和管理,數據庫的我採用了mongdb,爬蟲開發技術我採用了python,幾個億的數據後臺管理系統我採用php,我自己架構了分佈式架構系統,所以我採集的我採用分佈式+多線程+集羣的方式,採集速度相當的快!

python3 模擬請求目標網站:

我自己封裝了一個方法,把請求頭參數拼接後,然後調用requests的get方法直接模擬請求到目標網站,然後根據頁面返回的關鍵詞來識別是請求失敗或者成功或者是被封了

def get_html(url, mheaders={}, cookies={}):

while True:

try:

proxy = get_proxy() # 獲取代理

if not mheaders:

resp = requests.get(url, headers=headers, cookies=cookies, proxies=proxy, timeout=3)

else:

resp = requests.get(url, headers=mheaders, cookies=cookies, proxies=proxy, timeout=3)

if 'tianyancha' in url:

if resp.status_code == requests.codes.ok:

if '請輸入驗證碼' not in resp.text:

return resp.text

else:

print('{}被封了!'.format(proxy))

elif '融資歷史' in resp.text:

return resp.text

else:

print('錯誤的代碼編號:{}, url:{}'.format(resp.status_code, url))

else:

if resp.status_code == requests.codes.ok:

if '小查爲' in resp.text or '基本信息' in resp.text:

return resp.text

else:

print('錯誤的代碼編號:{}, url:{}'.format(resp.status_code, url))

except Exception as e:

print('url :{},錯誤:{}'.format(url, e))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章