【新手任務(wù)】
老板:我們做海外市場的,搞定投資商很重要竞漾。你去把境外投資企業(yè)(機(jī)構(gòu))全部給我復(fù)制下來眯搭。
總共2606頁,點(diǎn)下一頁业岁,然后再ctrl+C鳞仙,然后Ctrl+V,準(zhǔn)備著復(fù)制到天亮吧笔时。掃視一圈棍好,新來的實(shí)習(xí)生都回學(xué)校做畢業(yè)論文了。
【解決方案】
知識(shí)點(diǎn):Python 3 基本語法允耿,splinter庫和xpath基本知識(shí)
Case 1:
python利用splinter庫借笙,控制chrome瀏覽器,打開網(wǎng)頁较锡,獲取數(shù)據(jù)业稼。抓取境外投資企業(yè)(機(jī)構(gòu))名錄。
分析思路:
Step 1: 安裝splinter
百度 splinter 安裝蚂蕴,建議安裝anaconda(python常用庫就基本有了)低散,再安裝splinter
Step 2: 利用splinter打開chrome,訪問鏈接
from splinter import Browser
browser = Browser('chrome') #打開谷歌瀏覽器
browser.visit('http://femhzs.mofcom.gov.cn/fecpmvc/pages/fem/CorpJWList.html') #訪問鏈接
Step 3: 獲取信息
- 在網(wǎng)頁空白處熔号,點(diǎn)擊右鍵,選擇“檢查”鸟整。然后跨嘉,在出現(xiàn)的功能框中,用鼠標(biāo)點(diǎn)擊選擇元素
-
點(diǎn)擊了選擇元素之后吃嘿,按鈕變?yōu)樗{(lán)色(我是色盲祠乃,也是許是藍(lán)色吧)。然后兑燥,所鼠標(biāo)移動(dòng)到網(wǎng)頁上亮瓷,你要獲取獲取的信息上,然后單擊降瞳。
-
然后嘱支,將鼠標(biāo)移動(dòng)到功能框中蚓胸,你需要獲取的信息上,然后點(diǎn)擊右鍵-復(fù)制-XPath除师。這樣就獲得了該元素在網(wǎng)頁中的地址沛膳。
- 代碼如下:
# 通過谷歌瀏覽器的檢查功能,可以很迅速地獲取所需元素的地址汛聚。
# find_by_xpath(XPath地址) 返回值是儲(chǔ)存在列表中的
# 這里是只有一個(gè)元素的列表锹安,所以要選擇列表第一個(gè)元素的值
r1c1=browser.find_by_xpath('//*[@id="foreach"]/td[1]').first.value # 取得1行1列的值
r1c2=browser.find_by_xpath('//*[@id="foreach"]/td[2]').first.value # 取得1行2列的值
r1c3=browser.find_by_xpath('//*[@id="foreach"]/td[3]').first.value# 取得1行3列的值
browser.find_by_xpath('//*[@id="pageNoLink_0"]').first.click() # 點(diǎn)擊下一頁
# 打印數(shù)據(jù),并退出瀏覽器
print(r1c1,r1c2,r1c3)
browser.quit()
【結(jié)語】
本文簡單地講述了如何利用python splinter庫倚舀,操作谷歌瀏覽器叹哭,然后定位到所需的元素,然后獲取元素的值痕貌。獲取完畢后风罩,將數(shù)據(jù)打印,并退出瀏覽器。關(guān)于數(shù)據(jù)的儲(chǔ)存舵稠,請參考插上翅膀超升,讓Excel飛起來——xlwings(一)。完整幾百頁數(shù)據(jù)的獲取哺徊,就只是在代碼上加一個(gè)循環(huán)廓俭,如有需要下次再細(xì)講。完整代碼如下:
from splinter import Browser
browser = Browser('chrome')
browser.visit('http://femhzs.mofcom.gov.cn/fecpmvc/pages/fem/CorpJWList.html')
r1c1=browser.find_by_xpath('//*[@id="foreach"]/td[1]').first.value
r1c2=browser.find_by_xpath('//*[@id="foreach"]/td[2]').first.value
r1c3=browser.find_by_xpath('//*[@id="foreach"]/td[3]').first.value
browser.find_by_xpath('//*[@id="pageNoLink_0"]').first.click()
# 打印數(shù)據(jù)唉工,并退出瀏覽器
print(r1c1,r1c2,r1c3)
browser.quit()
參考資料
Xpath實(shí)例
splinter官方文檔