Python-ETF每日数据网页爬虫

时间:2018-10-24 21:17:39

标签: python web-scraping beautifulsoup finance

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

我才刚刚开始获得Python经验,想获得一些有关如何启动Web抓取程序的提示和准则。有人告诉我BeutifulSoup是用于网络抓取的软件包。

我以前用VBA抓取过Web,但是我使用的页面的HTML不同,我不知道这是否是因为ETF的某些值(例如价格和交易量)不断变化。

我愿意接受任何建议或任何其他有用的网站(我曾与Yahoo Finance和Morningstar进行过尝试,但HTML代码也遇到了同样的问题)。

2 个答案:

答案 0 :(得分:0)

是的,我同意“美丽汤”是一种很好的方法。这是一些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标签的名称和类别将保持不变。这就是工作美丽汤所需要的。

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

您可以在此处了解有关“美丽汤”的更多信息:

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

答案 1 :(得分:0)

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

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

这就是获取数据的方式:

investpy.get_etf_recent_data(etf=etf_name, country="my_country")
相关问题