python - 使用 python 和 urllib 从 Yahoo FInance 获取数据

标签 python urllib stock

我在 python 中使用 urllib 从 yahoo finance 获取股票价格。到目前为止,这是我的代码:

import urllib
import re

name = raw_input(">")

htmlfile = urllib.urlopen("http://finance.yahoo.com/q?s=%s" % name)

htmltext = htmlfile.read()

# The problemed area 
regex = '<span id="yfs_l84_%s">(.+?)</span>' % name

pattern = re.compile(regex)

price = re.findall(pattern, htmltext)

print price

所以我输入一个值,股票价格就出来了。但到目前为止,我可以让它显示价格,只是一个空白 [ ]。我对我认为问题所在的地方发表了评论。有什么建议么?谢谢。

最佳答案

您没有转义正则表达式中的正斜杠。改变你的正则表达式:

<span id="yfs_l84_%s">(.+?)</span>

<span id="yfs_l84_goog">(.+?)<\/span>

假设您输入公司的上市代码作为您代码的输入,这将解决您的问题。前任; google 的 goog。

也就是说,正则表达式对于您要尝试做的事情来说是一个糟糕的选择。正如其他人所建议的那样,探索 BeautifulSoup这是一个用于从 HTML 中提取数据的 Python 库。使用 BeautifulSoup,您的代码可以像这样简单:

from bs4 import BeautifulSoup
import requests

name = raw_input('>')
url = 'http://finance.yahoo.com/q?s={}'.format(name)
r = requests.get(url)
soup = BeautifulSoup(r.text)
data = soup.find('span', attrs={'id':'yfs_l84_'.format(name)})
print data.text

关于python - 使用 python 和 urllib 从 Yahoo FInance 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23098757/

相关文章:

python - 在 mod_python 上部署 WSGI 应用程序

python - 如何在 Python 3 中使用 urllib.request 下载文件?

python - urllib.request.urlretrieve 尝试在 Python 中下载 jpeg 时出错

wordpress - Woocommerce:更改 "# in stock"文本

php - 按属性值减少 WooCommerce 商品库存

python - 如何替换 Pandas 数据框中字符串中的子字符串

python - 如何并行化一个简单的 Python 循环?

python - 在 firebase 中定期运行一个 python 程序作为后台服务

python - 在 python 中更新/添加 url 中的用户名

python - 如何在python中从google finance自动下载日本历史股票价格