2018那一年我破解天眼查+企查查-企業工商數據-python爬蟲源碼破解版分享

由於項目需要,需要建立億萬級的企業信息數據庫,經過1個月的爬蟲技術博弈,我終於破解了企業數據爬蟲面臨的封IP和字體庫加密以及驗證碼的問題,完成了億萬級企業庫的信息的挖掘和數據庫建立,海量的企業數據如何進行市場化呢?做類似天眼查、啓信寶、企查查這種網站模式還是做成其他的模式呢?這樣的問題是目前很多創業的朋友面臨的問題。

其實大家可以×××搜關注"it大咖網"公衆號裏面都是中國頂尖技術大牛分享的大數據技術和前沿的尖端爬蟲技術完整解決思路和源碼,各種反爬、破解黑洞驗證碼、訓練機器人圖像識別等前沿技術,那才叫大牛呢,我每天也跟着這些大咖學習尖端的爬蟲技術。

爬蟲代碼:

class TianYanCha(object):
def init(self):
self.search_url = 'https://www.tianyancha.com/search?key={}&checkFrom=searchBox'
self.headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Connection': 'keep-alive',
'Host': 'www.tianyancha.com',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0',
}
self.search_queue = queue.Queue()
self.cids = set()
self.redis_r = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DB)

#列表數據
def load_search_data(self, text):
    soup = BeautifulSoup(text, 'lxml')
    companys = soup.find_all('a', class_='name select-none')
    for company in companys:
        company_id =company['href'].split('/')[-1]
        print("%s 成功" % company_id)
        print('開始下載詳情頁!======')
        self.load_detail_data(company_id)
        print('詳情頁成功======')

#詳細數據
def load_detail_data(self, company_id):
    detail_url = 'https://www.tianyancha.com/company/{}'.format(company_id)
    detail_text = self.get_html(detail_url)
    soup = BeautifulSoup(detail_text, 'lxml')
    name = soup.find('h1', class_="f18 mt0 mb0 in-block vertival-middle sec-c2").text if soup.find('h1', class_="f18 mt0 mb0 in-block vertival-middle sec-c2") else company_id
    #獲取詳細數據
    get_all_info(soup, company_id, name)
    print("%s 詳細數據成功" % company_id)

def get_html(self, url):
    while True:
        try:
            proxy = get_proxy()#獲取代理IP
            #time.sleep(1 + random())
            print('代理IP:'+str(proxy))
            resp = requests.get(url, headers=self.headers, timeout=20, proxies=proxy)
            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))
        except Exception as e:
            print('url :{},錯誤:{}'.format(url, e))

#分頁爬數據
def load_page_data(self,url,word):
    #第一頁數據
    print('開始搜索頁數據======')
    text = self.get_html(url)
    self.load_search_data(text)

    print('完成搜索數據======')
    #獲取分頁數據(2-5頁)
    print('開始分頁數據======')

    soup = BeautifulSoup(text, 'lxml')
    #total = int(soup.find('div', class_='total').lists_text.replace('共', '').replace('頁', '')) if soup.find('div', class_='total') else 1
    for index in range(2, 6):
        print('page:https://www.tianyancha.com/search/p{}?key={}'.format(index, word))
        page_url='https://www.tianyancha.com/search/p{}?key={}'.format(index, word)
        text = self.get_html(page_url)
        self.load_search_data(text)
    print('完畢分頁數據======')

破解天某查爬蟲,如何解決採集數據IP被封的問題?

我4個月前用python開發了一套天某查分佈式爬蟲系統,實現對天某查網站的數據進行實時更新採集。網站的數據模塊,數據存儲結構和他一樣,當時的想法是做一個和天眼查一模一樣的數據服務平臺,然後數據源就通過我的爬蟲技術從天某查、啓某寶實時、企某查同步採集。採集天某查數據需要做的工作準備:

1、首先分析目標網站數據模塊:

在採用python3寫爬蟲程序開始爬天某查的數據時候,首先需要我先分析這個網站有那些數據模塊,整個網站有主要核心數據有以下30大模塊:1基本信息、2法人代表、3主要成員、4股東&出資、5變更記錄、6公司年報、7司法風險、8輿情事件、9崗位招聘、10商品信息、11網站備案、12商標數據、13專利數據,、14 作品著作權軟件著作權、對外投資關係、稅務評級、行政處罰、進出口信用、企業評級信用等三十幾個維度的企業數據

2、寫一個爬蟲demo模型分析網站的頁面結構和代碼結構

我們模擬http請求到天某查目標網站,看看天某查響應的的數據信息是什麼樣子?

當我們正常訪問的時候是可以很輕鬆得到列表的數據以及進入列表的詳細鏈接,我們在通過鏈接採集得到每個企業的詳細的數據包。

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

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

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

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

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

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

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

6 字體庫加密破解

字體庫加密,是最新的一種反爬技術,幾個做企業信息搜索的網站都在採用字體庫加密的方式進行反爬,來實現保護自己的網站數據不被網絡爬蟲採集到,這種技術的原理很簡單,借用瀏覽器的解析和渲染,讓你用瀏覽器看到的內容和查看元素看到的內容是不同的,利用字體庫加密碼技術進行混淆渲染,實現爬蟲爬到的是髒數據而不是真實數據的目的,比如天眼查的 公司介紹字段就引用了字體庫加密技術,然後這種技術有一定的算法規則,只要您認真分析規律自然就輕鬆破解了!

(對爬蟲技術和大數據感興趣朋友 迎加我qq:2779571288

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