我在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
所以我输入一个值,股票价格就出来了。但到目前为止,我可以让它显示一个价格,只是一个空白。我对我认为的问题所在发表了评论。有什么建议吗?谢谢。
你的正则表达式没有逃过正斜杠。将regex更改为:
到
如果您输入公司的上市代码作为代码的输入,这将解决您的问题。谷歌的谷歌。
也就是说,regex是一个不好的选择,你想做什么。正如其他人所建议的,探索BeautifulSoup,这是一个用于从HTML中提取数据的Python库。使用BeautifulSoup,您的代码可以简单到:
This guide将向您展示如何构建将返回csv的Yahoo财务查询。然后可以使用
csv
库轻松地解析它们。如果您真的想尝试破解HTML,请使用BeautifulSoup。HTML不能用正则表达式轻松解析。
你为什么不能用熊猫?它对财务数据采集和时间序列分析有很好的支持。
http://pandas.pydata.org/pandas-docs/stable/remote_data.html
以下是直接从文档中获得的yahoo示例:
相关问题 更多 >
编程相关推荐