【Python爬蟲實戰】獲取2018年重慶智博會參會企業名單,用於市場洞察
【背景】
做市場洞察,經常需要分析某個行業的Top客戶,通常會通過某種活動或某種機構獲取名單。網站上也能收集到,但是手工收集比較麻煩。
下面通過Python網路爬蟲 獲取2018年重慶智博會參會企業的名單來體驗,如何批量獲取目標網頁的名單。
【操作步驟】
1、分析網頁的地址結構
重慶智博會官網-展覽-展商名冊,第一頁如下:
首先分析網址:
總計27頁,每頁最多20個企業
從第2頁到第27頁,網址最後一個數字控制頁數。
嘗試一下第一頁 也通過該規則是否ok?下面2個網頁的內容是一樣的,因此可以統一網址規則。
得出網址規則:頁面數字在python程式碼中分別用1-27表示
2、分析網頁html程式碼結構
找出哪個欄位是提取企業名字的,用什麼正則表示式來提取內容。
第一頁有一個“華碩電腦”,在網頁原始碼中,CTRL+F,搜尋到“華碩電腦”,共出現了3次。
試下搜尋“<p class="zsmcc-org">華碩電腦</p> ”剛好匹配出唯一一個結果。
再試下搜尋 <p class="zsmcc-org">,匹配出20結果,剛好就是1頁中全部20家企業的名字。
結論:通過網頁標籤<p class="zsmcc-org">企業名字</p>,可以將本頁中所有企業名字找出來。
3、編寫爬蟲程式碼
#!/usr/bin/python3 #-*- coding: utf-8 -*- import urllib.request import urllib.error import random import re #瀏覽器偽裝池,將爬蟲偽裝成瀏覽器,避免被網站遮蔽 uaPools=[ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)", ] #每爬取一頁,就隨機選取一種瀏覽器來偽裝 def randomUA(): opener = urllib.request.build_opener() currUA = random.choice(uaPools) uaParm= ("User-Agent", currUA) opener.addheaders = [ua] urllib.request.install_opener(opener) print("當前使用的UA:"+str(currUA)) #頁面數從1到27 urlPrefix = "https://www.smartchina-expo.cn/exhibition/roster-page-" urlPostfix = ".html" pageStartIdx = 1 pageEndIdx = 27+1 #語法原因,由於從1開始爬取,陣列下標從1開始,因此最後一頁碼數要+1 #爬取網頁上的企業名字 for pageIdx in range(pageStartIdx, pageEndIdx): visitURL = urlPrefix + str(pageIdx) + urlPostfix webData = urllib.request.urlopen(visitURL).read().decode("utf-8", "ignore") matchPat ='<p class="zsmcc-org">(.*?)</p>' cusName = re.compile(matchPat, re.S).findall(webData) print("===爬取第 " +str(pageIdx)+ " 頁(" + visitURL + ")的企業名單如下=====") for nameIdx in range(0, len(cusName)): print(cusName[nameIdx])
測試結果如下:
===爬取第 1 頁(https://www.smartchina-expo.cn/exhibition/roster-page-1.html)的企業名單如下===== 巨集碁 阿里巴巴(中國)網路技術有限公司 華碩電腦 中國航空工業集團有限公司 中國寶武鋼鐵集團有限公司 深圳華大基因科技有限公司 京東方科技集團股份有限公司 重慶長安汽車股份有限公司 中國通訊服務股份有限公司 中國建設銀行 國家開發銀行 中國電信集團公司 中國行動通訊集團公司 保利集團 中國鐵塔股份有限公司 中國聯通網路通訊集團有限公司 思科公司 中冶賽迪集團有限公司 重慶機電控股(集團)公司 中國石油天然氣集團有限公司 ===爬取第 2 頁(https://www.smartchina-expo.cn/exhibition/roster-page-2.html)的企業名單如下===== 中國中車集團有限公司 中國船舶重工集團有限公司 中軟國際有限公司
......