Python爬蟲獲取基金列表
1 前言
python爬蟲用來收集數(shù)據(jù)是最直接和常用的方法,可以使用python爬蟲程序獲得大量的數(shù)據(jù),從而變得非常的簡單和快速;絕大多數(shù)網(wǎng)站使用了模板開發(fā),使用的模板可以快速生成大量相同布局不同內(nèi)容的頁面,這時只需要為一個頁面開發(fā)爬蟲程序,因為爬蟲程序也可以對同一模板生成的不同內(nèi)容進行爬取內(nèi)容
2 哪里去獲取數(shù)據(jù)呢
這里給大家準備好了,打開這個連接,就能找看到對應的基金信息:
http://fund.eastmoney.com/jzzzl.html
有了基金連接,我們要做的就是怎么把它抓取下來,123 開始,我恰巧發(fā)現(xiàn)了后臺訪問的接口,是不是很神奇,該是上圖的時候了,大家可以看到如下圖:
# 這是原始的連接 http://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx?lx=1&sort=zdf,desc&page=2,200&onlySale=0 # 經(jīng)過我使用postman 刪減掉一些參數(shù)發(fā)現(xiàn)精簡的連接如下,我不能不吐槽一下,這個時候了還有參數(shù)傳遞使用中文首字母拼寫的, # lx分明就是類型的簡寫。sort 是對某些字段排序可以忽略。分頁的話2,200就是第二頁,每頁200條,onlySale就是可以賣出的條件。 http://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx?lx=1&sort=zdf,desc&page=2,100&onlySale=0
3 怎么抓取數(shù)據(jù)呢
這里我們使用python,需要安裝的類庫有 requests/demjson/prettytable/json,有沒有特別簡單呢?
# 安裝命令如下 # 發(fā)起請求 pip install requests # 將不是那么嚴格的json 格式轉(zhuǎn)換為json pip install demjson # 格式化打印數(shù)據(jù) pip install prettytable # 將json 格式化的文本轉(zhuǎn)換為json pip install json
這里我可以上代碼了,簡單的邏輯就是先抓取api接口返回的信息,然后解析報文,將返回結(jié)果轉(zhuǎn)換成json 格式后只選擇需要獲取的內(nèi)容,最后將獲取的結(jié)果進行輸出即可。
import requests import json import demjson from prettytable import PrettyTable # 數(shù)據(jù)表格的列表表頭字段 title_list = ["code", "name", "value"] # 查詢基金列表信息 def query_fund_list(page= 1): req_url = "http://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx?lx=1&sort=zdf,desc&page={},20&onlySale=0".format(page) response = requests.get(req_url) # 輸出響應頭 # print(response.headers) # 獲取請求結(jié)果并替換,否則結(jié)果不能進行格式化json resp_body = response.text.replace("var db=", "") # 本來首選是這個json, 因為json 不支持 {a :"1"} 這樣的轉(zhuǎn)換,因此使用了 demojson # json_data = json.loads(resp_body) # 轉(zhuǎn)換對象為 json 對象,使不規(guī)則的json格式化為json對象 resp_body = demjson.decode(resp_body) # 獲取結(jié)果數(shù)組 fund_list = resp_body["datas"] body_list = [] for node in fund_list: tmp = [] tmp.append(node[0]) tmp.append(node[1]) tmp.append(node[3]) body_list.append(tmp) # 創(chuàng)建一個對象 PrettyTable 用于打印輸出結(jié)果 bt = PrettyTable() # 將表頭信息信息放入bt 中 bt.field_names = title_list # 將表格內(nèi)容放置在 bt 中 bt.add_rows(body_list) # 打印結(jié)果 print(bt) if __name__ == "__main__": # 這里只打印了第一頁,循環(huán)打印結(jié)果就不寫了,大家都會的 query_fund_list(1)
最終輸出的結(jié)果如圖所示 :
最終我們達到的結(jié)果就是這樣的結(jié)果,有了這些結(jié)果,我們可以進行結(jié)構(gòu)化存儲,放進數(shù)據(jù)庫中方面查詢和使用。
基金代碼 | 基金名稱 | 最新凈值 |
---|---|---|
005585 | 銀河文體娛樂混合 | 1.6363 |
001907 | 國投瑞銀境煊靈活配置混合A | 3.3055 |
001908 | 國投瑞銀境煊靈活配置混合C | 3.1667 |
164818 | 工銀中證傳媒指數(shù)(LOF)A | 0.9231 |
... | ... | ... |
這是一個簡單的開始,我們獲取到了基金的列表。后續(xù)我們會抓取基金的基本信息和變動信息,建立模型去展現(xiàn)。
到此這篇關(guān)于Python爬蟲獲取基金列表的文章就介紹到這了,更多相關(guān)Python獲取列表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python圖形開發(fā)GUI庫pyqt5的基本使用方法詳解
這篇文章主要介紹了python圖形開發(fā)GUI庫pyqt5的基本使用方法詳解,需要的朋友可以參考下2020-02-02python面向?qū)ο髮崿F(xiàn)名片管理系統(tǒng)文件版
這篇文章主要為大家詳細介紹了python面向?qū)ο髮崿F(xiàn)名片管理系統(tǒng)文件版,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04PyTorch中model.zero_grad()和optimizer.zero_grad()用法
這篇文章主要介紹了PyTorch中model.zero_grad()和optimizer.zero_grad()用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06