Python - ETF 每日数据网络抓取
Python - ETFs Daily Data Web Scraping
我正在尝试通过网络抓取不同 ETF 的一些日常信息。我发现 https://www.marketwatch.com/ have a accurate info. The most relevant info is the open Price, outstanding shares, NAV, total assets of the ETF. Here is the link for IVV US Equity: https://www.marketwatch.com/investing/fund/ivv
我刚刚开始获得 Python 经验,希望收到一些关于如何启动网络抓取程序的提示和指南。有人告诉我 BeutifulSoup 是用于网络抓取的包。
我以前用VBA抓取过网页,但是我用过的页面HTML不一样,我不知道这是不是因为ETF的某些值(比如价格和 Taded Volume)不断变化。
我愿意接受任何可能有用的建议或任何其他网站(我已经尝试使用 Yahoo Finance 和 Morningstar,但我遇到了与 HTML 代码相同的问题)。
是的,我同意 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 脚本显示验证码。所以你需要找到一个解决这个问题的方法。另外,我建议检查抓取的合法性以及它是否违反了他们的服务条款。
您可以在这里了解更多关于 Beautiful Soup 的信息:
如果您使用包 investpy,则不必使用网络抓取来获取所需的数据。 investpy 允许您获取每日 ETF 数据。它还可以帮助您通过 ISIN(国际证券识别号)查找 ETF:
investpy.search_etfs(by="isin", value="my_isin")
这就是您获取数据的方式:
investpy.get_etf_recent_data(etf=etf_name, country="my_country")
我正在尝试通过网络抓取不同 ETF 的一些日常信息。我发现 https://www.marketwatch.com/ have a accurate info. The most relevant info is the open Price, outstanding shares, NAV, total assets of the ETF. Here is the link for IVV US Equity: https://www.marketwatch.com/investing/fund/ivv
我刚刚开始获得 Python 经验,希望收到一些关于如何启动网络抓取程序的提示和指南。有人告诉我 BeutifulSoup 是用于网络抓取的包。
我以前用VBA抓取过网页,但是我用过的页面HTML不一样,我不知道这是不是因为ETF的某些值(比如价格和 Taded Volume)不断变化。
我愿意接受任何可能有用的建议或任何其他网站(我已经尝试使用 Yahoo Finance 和 Morningstar,但我遇到了与 HTML 代码相同的问题)。
是的,我同意 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 脚本显示验证码。所以你需要找到一个解决这个问题的方法。另外,我建议检查抓取的合法性以及它是否违反了他们的服务条款。
您可以在这里了解更多关于 Beautiful Soup 的信息:
如果您使用包 investpy,则不必使用网络抓取来获取所需的数据。 investpy 允许您获取每日 ETF 数据。它还可以帮助您通过 ISIN(国际证券识别号)查找 ETF:
investpy.search_etfs(by="isin", value="my_isin")
这就是您获取数据的方式:
investpy.get_etf_recent_data(etf=etf_name, country="my_country")