【问题标题】:Python - ETFs Daily Data Web ScrapingPython - ETF 每日数据网络抓取
【发布时间】:2019-03-29 09:39:57
【问题描述】:

我正在尝试通过网络抓取不同 ETF 的一些日常信息。我发现https://www.marketwatch.com/ 有准确的信息。最相关的信息是 ETF 的开盘价、流通股、资产净值、总资产。这是 IVV 美国股票的链接:https://www.marketwatch.com/investing/fund/ivv

我刚刚开始获得 Python 经验,希望收到一些关于如何启动网络抓取程序的提示和指南。有人告诉我 BeutifulSoup 是用于网页抓取的软件包。

我之前用VBA爬过网页,但是我使用的页面的HTML不同,我不知道这是不是因为ETF的某些值(例如Price和Taded Volume)不断变化。

我对任何可能有用的建议或任何其他网站持开放态度(我曾尝试使用 Yahoo Finance 和 Morningstar,但 HTML 代码也遇到了同样的问题)。

【问题讨论】:

  • 嗨,API 是抓取数据的最佳方式,数据每秒都在变化,例如股票市场、youtube(观看次数、订阅者)、Twitter、Facebook 等,
  • 谢谢 Bhanu Tez,我会寻找可以帮助我了解市场信息的。

标签: python web-scraping beautifulsoup finance


【解决方案1】:

是的,我同意 Beautiful Soup 是一个好方法。下面是一些 Python 代码,它使用 Beautiful Soup 库从 IVV 基金页面中提取日内价格:

import requests
from bs4 import BeautifulSoup

r = requests.get("https://www.marketwatch.com/investing/fund/ivv")
html = r.text

soup = BeautifulSoup(html, "html.parser")

if soup.h1.string == "Pardon Our Interruption...":
    print("They detected we are a bot. We hit a captcha.")
else:
    price = soup.find("h3", class_="intraday__price").find("bg-quote").string
    print(price)

价格经常变化的事实不是问题。 HTML 标记的名称和类将保持不变。这就是 Beautiful Soup 工作所需要的一切。

您面临的主要挑战是该网站能够检测到您没有使用 Internet 浏览器,并将向您的 Python 脚本显示验证码。因此,您将需要找到解决此问题的方法。另外,我建议检查抓取的合法性以及它是否违反了他们的服务条款。

您可以在这里了解更多关于美丽汤的信息:

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

【讨论】:

    【解决方案2】:

    如果您使用包investpy,则不必使用网络抓取来获取所需的数据。 investpy 允许您获取每日 ETF 数据。它还可以帮助您通过 ISIN(国际证券识别号)找到 ETF:

    investpy.search_etfs(by="isin", value="my_isin")
    

    这就是你获取数据的方式:

    investpy.get_etf_recent_data(etf=etf_name, country="my_country")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 2017-07-22
      • 2020-08-02
      • 2014-12-15
      • 1970-01-01
      • 2021-08-11
      相关资源
      最近更新 更多