最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲獲取基金基本信息

 更新時間:2022年05月05日 15:06:56   作者:??斜月????  
這篇文章主要介紹了Python爬蟲獲取基金基本信息,文章基于上一篇文章內容基于python的相關資料展開主題,需要的小伙伴可以參考一下

1 前言

上篇文章Python爬蟲獲取基金列表我們已經講述了如何從基金網站上獲取基金的列表信息。這一騙我們延續(xù)上一篇,繼續(xù)分享如何抓取基金的基本信息做展示。展示的內容包括基金的基本信息,諸如基金公司,基金經理,創(chuàng)建時間以及追蹤標、持倉明細等信息。

2 如何抓取基本信息

# 在這里我就直接貼地址了,這個地址的獲取是從基金列表跳轉,然后點基金概況就可以獲取到了。
http://fundf10.eastmoney.com/jbgk_005585.html

基金的詳情頁面和基金的基本信息頁面:

 現在我們需要做的事情就是怎么把基金的基本概況數據抓取下來,很遺憾,這個工作不像上次那樣可以直接通過接口調用的方式獲取結果,而是需要我們解析頁面html,通過獲取元素來解析我們所需要的信息。這時我們就需要使用xpath來獲取所需要的元素。

3 xpath 獲取數據

解析html 數據,我們通常使用 xpath 來獲取頁面的數據,在這里我們也首選這個 xpath,那么怎么使用呢?首先需要安裝相關的類庫。

# 安裝 lxml
pip install lxml

使用瀏覽器打開,然后點擊[檢查]使用選擇基金基本信息,然后如圖所示選擇[copy XPath],可以獲取到數據所在的表格位置

from lxml import etree
# ...
# 將返回的數據結果進行解析,形成 html 文檔
html = etree.HTML(resp_body)
result = etree.tostring(html, pretty_print=True)
# 打印獲取到的結果
print(result)
# 抓取數據的位置,這個地方的數據是通過瀏覽器的 xpath 定位來確定的 
table_body = html.xpath('//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tbody')
# 打印數據結果
print(table_body)

按照常理來說,這里應該可以獲取到基金基本新的結果,但是萬萬沒想到呀,竟然失算了,獲取到的結果竟然為空,百思不得其解。我還以為是api使用的不夠熟練,不能正確的獲取,直到我仔細研究了返回的頁面信息,才看到根本沒有 tbody 這個元素,可能是瀏覽器渲染后導致的結果,也就是說通過 xpath 來定位元素位置來獲取數據這條路可能不行。事實上也確實是如此,基金基本信息的數據是放在頁面的 scripts 標簽里面的,所以這個條真的就行不通了??赡芡ㄟ^xpath是配合Selenium一起使用做頁面自動化測試的,這個有機會再去研究吧。

4 bs4 獲取數據

既然直接獲取頁面元素的方式行不通,那么就只有解析返回頁面來獲取數據了,java 語言的話可以使用 joup來解析獲取數據,但是python又如何來操作呢?這就需要使用 bs4 來解決了。安裝方式如下:

# 簡稱bs4,python解析html非常好用的第三方類庫
pip install beautifulsoup4

其主要使用的解析方法如下圖所示,接下來我們使用lxml來解析html數據,如何使用html5lib的話,需要先進行安裝才能使用 pip install html5lib

解析數據的思路是這樣的,我們看到瀏覽器返回的結果是包含 table>tr>td 這樣的結構,我們先獲取到基金對應信息的table,然后獲取到table中的 td,因為這個表格展示內容是固定的,我們選取對應的數據下標即可獲取對應的數據。

# 解析返回的報文
soup = BeautifulSoup(resp_body, 'lxml')
# 獲取數據的table標簽所有數據
body_list = soup.find_all("table")
# 基金信息對應的是第二個
basic_info = body_list[1]
# 打印結果并循環(huán)輸出td的內容
print(basic_info)
td_list = basic_info.find_all("td")
for node in td_list:
 ? print(node.get_text())

這里涉及兩個方法find_allget_text,第一個是元素選擇器,可以根據標簽class進行搜索,第二個是獲取元素中的內容。

5 最終結果展現

經常不斷的嘗試,最終的最簡版代碼如下所示:

from lxml import etree
import requests
from prettytable import PrettyTable
import datetime
# 使用BeautifulSoup解析網頁
from bs4 import BeautifulSoup
# 獲取基金基本信息
def query_fund_basic(code):
 ? ?# http://fundf10.eastmoney.com/jbgk_005585.html
 ? ?response = requests.get("http://fundf10.eastmoney.com/jbgk_{}.html".format(code))
 ? ?resp_body = response.text
 ? ?soup = BeautifulSoup(resp_body, 'lxml')
 ? ?body_list = soup.find_all("table")
 ? ?basic_info = body_list[1]
 ? ?# print(basic_info)
 ? ?tr_list = basic_info.find_all("td")
 ? ?# 暫存一下列表
 ? ?tmp_list = []
 ? ?tmp_list.append(tr_list[2].get_text().replace("(前端)", ""))
 ? ?tmp_list.append(tr_list[1].get_text())
 ? ?tmp_list.append(tr_list[8].get_text())
 ? ?tmp_list.append(tr_list[10].get_text())
 ? ?tmp_list.append(tr_list[5].get_text().split("/")[0].strip())
 ? ?tmp_list.append(tr_list[5].get_text().split("/")[1].strip().replace("億份", ""))
 ? ?tmp_list.append(tr_list[3].get_text())
 ? ?tmp_list.append(tr_list[18].get_text())
 ? ?tmp_list.append(tr_list[19].get_text())
 ? ?return tmp_list
if __name__ == '__main__':
 ? ?print("start analyze !")
 ? ?code_list = ["005585", "000362"]
 ? ?# 需要關注的基本信息如右所示 基金代碼 基金名稱 基金公司 基金經理 創(chuàng)建時間 
 ? ?# 基金份額 基金類型 業(yè)績基準 跟蹤標的
 ? ?head_list = ["code", "name", "company", "manager", "create_time", 
 ? ?"fund_share", "fund_type", "comp_basic", "idx_target"]
 ? ? # 生成表格對象
 ? ?tb = PrettyTable() 
 ? ?tb.field_names = head_list ?# 定義表頭
 ? ?for node in code_list:
 ? ? ? tb.add_row(query_fund_basic(node))
 ? ?# 輸出表格
 ? ?print(tb)
 ? ?reslt = str(tb).replace("+", "|")
 ? ?print(reslt)

最終打印的結果如下所示,感覺很期待: 

 接來下我們會利用數據庫進行存儲基金的基本信息,然后基于此才能抓取基金的變動信息進行分析,距離激動人心的時刻已經很近了。

到此這篇關于Python爬蟲獲取基金基本信息的文章就介紹到這了,更多相關Python獲取信息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python文件頭部聲明#coding=utf-8問題

    python文件頭部聲明#coding=utf-8問題

    這篇文章主要介紹了python文件頭部聲明#coding=utf-8問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • pandas的排序、分組groupby及cumsum累計求和方式

    pandas的排序、分組groupby及cumsum累計求和方式

    這篇文章主要介紹了pandas的排序、分組groupby及cumsum累計求和方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Django自帶的用戶驗證系統(tǒng)實現

    Django自帶的用戶驗證系統(tǒng)實現

    這篇文章主要介紹了Django自帶的用戶驗證系統(tǒng)實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • python3中利用filter函數輸出小于某個數的所有回文數實例

    python3中利用filter函數輸出小于某個數的所有回文數實例

    今天小編就為大家分享一篇 python3中利用filter函數輸出小于某個數的所有回文數實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python的函數的一些高階特性

    Python的函數的一些高階特性

    這篇文章主要介紹了Python的函數的一些高階特性,包括函數名用作變量等一些小技巧,需要的朋友可以參考下
    2015-04-04
  • python和flask中返回JSON數據的方法

    python和flask中返回JSON數據的方法

    下面小編就為大家整理了一篇python和flask中返回JSON數據的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Python實現孤立隨機森林算法的示例代碼

    Python實現孤立隨機森林算法的示例代碼

    孤立森林(isolation?Forest)是一種高效的異常檢測算法,它和隨機森林類似,但每次選擇劃分屬性和劃分點(值)時都是隨機的,而不是根據信息增益或基尼指數來選擇。本文將用Python實現這一算法,需要的可以參考一下
    2022-03-03
  • pytorch中可視化之hook鉤子

    pytorch中可視化之hook鉤子

    本文主要介紹了pytorch中可視化之hook鉤子,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • face_recognition庫在python的安裝

    face_recognition庫在python的安裝

    這篇文章主要介紹了face_recognition庫在python的安裝,解決了一些沒有安裝時出現的一些錯誤,需要的朋友可以參考下
    2021-04-04
  • Python猴子補丁知識點總結

    Python猴子補丁知識點總結

    在本篇文章里小編給大家分享的是關于Python猴子補丁知識點總結,需要的朋友們學習下。
    2020-01-01

最新評論

松原市| 思南县| 东乡族自治县| 长治市| 靖江市| 香格里拉县| 吉隆县| 宜兴市| 尉氏县| 阿拉尔市| 阳朔县| 呼伦贝尔市| 财经| 梓潼县| 绥滨县| 喜德县| 正镶白旗| 犍为县| 图木舒克市| 巴马| 万源市| 昌平区| 遂川县| 洞头县| 黑河市| 白水县| 麻栗坡县| 嘉祥县| 宿松县| 呼玛县| 南丹县| 石棉县| 辽宁省| 石柱| 钟山县| 平原县| 塔河县| 南岸区| 沈丘县| 新建县| 温州市|