无法从Morningstar获取dataid如何从Python访问网络检查工具?

2024-05-03 19:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想刮胡子晨星网在网站上获取每只基金的财务数据和价格。幸运的是,我在获取财务数据(持有量、资产配置、投资组合、风险等)方面没有问题,但是当要找到以JSON格式显示每个基金每日价格的URL时,有一个HTML代码中没有的“dataid”值,没有它就无法知道承载所有价格的确切URL。在

enter image description here

我尝试过将整个页面打印为许多基金的文本,但没有一个在HTML代码中显示我需要的“dataid”值,以便获得价格。承载价格的URL还包括“secid”,它很容易被刮除,但与我需要刮取的“dataid”没有任何关系。在

enter image description here

import requests
from lxml import html
import re
import json

quote_page = "https://www.morningstar.com/etfs/arcx/aadr/quote.html"
prices1 = "https://mschart.morningstar.com/chartweb/defaultChart?type=getcc&secids="
prices2 = "&dataid="
prices3 = "&startdate="
prices4 = "&enddate="
starting_date = "2018-01-01"
ending_date = "2018-12-28"

quote_html = requests.get(quote_page, timeout=10)
quote_tree = html.fromstring(quote_html.text)
security_id = re.findall('''meta name=['"]secId['"]\s*content=['"](.*?)['"]''', quote_html.text)[0]
security_type = re.findall('''meta name=['"]securityType['"]\s*content=['"](.*?)['"]''', quote_html.text)[0]

data_id = "8225"

daily_prices_url = prices1 + security_id + ";" + security_type + prices2 + data_id + prices3 + starting_date + prices4 + ending_date
daily_prices_html = requests.get(daily_prices_url, timeout=10)
json_prices = daily_prices_html.json()
for json_price in json_prices["data"]["r"]:
    j_prices = json_price["t"]
    for j_price in j_prices:
        daily_prices = j_price["d"]
        for daily_price in daily_prices:
            print(daily_price["i"] + " || " + daily_price["v"])

上面的代码适用于“AADR”ETF,因为我手动复制并粘贴了“dataid”值到“data_id”变量中,没有这条信息就无法获取每日价格。我不想用Selenium作为寻找“dataid”的替代方法,因为它是一个非常慢的工具,我的目的是为超过2.8万个基金收集数据,所以我只尝试了机器人网络抓取方法。 您对如何访问networkinspection工具有什么建议吗?它是我目前找到的唯一显示“dataid”的源? 提前谢谢


Tags: importidjsonurldatadate基金html
2条回答

数据id可能不那么重要。我改变了与AADR关联的代码f0000412e,同时保持数据id不变。在

我从这里得到了所有这些代码的清单:

https://www.firstrade.com/scripts/free_etfs/io.php

然后将选择的代码添加到你的url中

[
    "AIA",
    "iShares Asia 50 ETF",
    "FOUSA06MPQ"
  ]

使用FOUSA06MPQ

^{pr2}$

您可以通过将其他基金作为基准添加到图表中来验证这些值,例如XNAS:AIA

enter image description here

12月28日的价值为55.32。将其与检索到的JSON进行比较:

我重复了一遍

[
    "ALD",
    "WisdomTree Asia Local Debt ETF",
    "F00000M8TW"
  ]

https://mschart.morningstar.com/chartweb/defaultChart?type=getcc&secids=F00000M8TW;FE&dataid=8225&startdate=2017-01-01&enddate=2018-12-30

不管安全性如何,dataid8217对我来说都很好。在

相关问题 更多 >