ng1*_*716 5 python urllib stock
我在 python 中使用 urllib 从雅虎财经获取股票价格。到目前为止,这是我的代码:
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
Run Code Online (Sandbox Code Playgroud)
所以我输入一个值,股票价格就出来了。但到目前为止我可以让它显示价格,只是一个空白的[]。我已经评论过我认为问题出在哪里。有什么建议么?谢谢。
您尚未转义正则表达式中的正斜杠。更改您的正则表达式:
<span id="yfs_l84_%s">(.+?)</span>
Run Code Online (Sandbox Code Playgroud)
到
<span id="yfs_l84_goog">(.+?)<\/span>
Run Code Online (Sandbox Code Playgroud)
假设您输入公司的列表代码作为代码的输入,这将解决您的问题。前任; 谷歌谷歌。
也就是说,对于您想要做的事情来说,正则表达式是一个糟糕的选择。正如其他人所建议的,探索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
Run Code Online (Sandbox Code Playgroud)