手把手教你使用Python網(wǎng)絡(luò)爬蟲獲取基金信息
回復(fù)“書籍”即可獲贈Python從入門到進階共10本電子書
大家好,我是Python進階者。
一、前言
前幾天有個粉絲找我獲取基金信息,這里拿出來分享一下,感興趣的小伙伴們,也可以積極嘗試。

二、數(shù)據(jù)獲取
這里我們的目標(biāo)網(wǎng)站是某基金官網(wǎng),需要抓取的數(shù)據(jù)如下圖所示。
可以看到上圖中基金代碼那一列,有不同的數(shù)字,隨機點擊一個,可以進入到基金詳情頁,鏈接也非常有規(guī)律,以基金代碼作為標(biāo)志的。
其實這個網(wǎng)站倒是不難,數(shù)據(jù)什么的,都沒有加密,網(wǎng)頁上的信息,在源碼中都可以直接看到。
這樣就降低了抓取難度了。通過瀏覽器抓包的方法,可以看到具體的請求參數(shù),而且可以看到請求參數(shù)中只有pi在變化,而這個值恰好對應(yīng)的是頁面,直接構(gòu)造請求參數(shù)就可以了。
代碼實現(xiàn)過程
找到數(shù)據(jù)源之后,接下來就是代碼實現(xiàn)了,一起來看看吧,這里給出部分關(guān)鍵代碼。
獲取股票id數(shù)據(jù)
response?=?requests.get(url,?headers=headers,?params=params,?verify=False)
????pattern?=?re.compile(r'.*?"(?P.*?)".*?' ,?re.S)
????result?=?re.finditer(pattern,?response.text)
????ids?=?[]
????for?item?in?result:
????????#?print(item.group('items'))
????????gp_id?=?item.group('items').split(',')[0]
結(jié)果如下圖所示:

之后構(gòu)造詳情頁鏈接,獲取詳情頁的基金信息,關(guān)鍵代碼如下:
response?=?requests.get(url,?headers=headers)
response.encoding?=?response.apparent_encoding
selectors?=?etree.HTML(response.text)
danweijingzhi1?=?selectors.xpath('//dl[@class="dataItem02"]/dd[1]/span[1]/text()')[0]
danweijingzhi2?=?selectors.xpath('//dl[@class="dataItem02"]/dd[1]/span[2]/text()')[0]
leijijingzhi?=?selectors.xpath('//dl[@class="dataItem03"]/dd[1]/span/text()')[0]
lst?=?selectors.xpath('//div[@class="infoOfFund"]/table//text()')
結(jié)果如下圖所示:
將具體的信息做相應(yīng)的字符串處理,然后保存到csv文件中,結(jié)果如下圖所示:
有了這個,你可以做進一步的統(tǒng)計和數(shù)據(jù)分析了。
三、總結(jié)
大家好,我是Python進階者。這篇文章主要分享了使用Python網(wǎng)絡(luò)爬蟲獲取基金數(shù)據(jù)信息,這個項目不算太難,里邊稍微有點小坑,歡迎大家積極嘗試,如果有遇到問題,請?zhí)砑游液糜?,我?guī)椭鉀Q。
這篇文章主要是以【股票型】的分類做了抓取,其他的類型,我就沒做了,歡迎大家嘗試,其實邏輯都是一樣的,改下參數(shù)就可以了。
最后需要本文代碼的小伙伴們,可以添加我v獲??!此外,方便大家學(xué)習(xí)Python,我還建立了一個Python高質(zhì)量學(xué)習(xí)交流群,遇到Python問題都可以隨便問,需要進來的小伙伴們,加我v,我拉你!
小伙伴們,快快用實踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何Python問題,歡迎加我好友,我拉你進Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
