Python 巨蟒刮股价
我最近看到一篇关于有人在雅虎财经页面上刮股价的帖子,代码是这样的:Python 巨蟒刮股价,python,python-3.x,input,beautifulsoup,Python,Python 3.x,Input,Beautifulsoup,我最近看到一篇关于有人在雅虎财经页面上刮股价的帖子,代码是这样的: from bs4 import BeautifulSoup import requests name = input('>') url = 'http://finance.yahoo.com/q?s={}'.format(name) r = requests.get(url) soup = BeautifulSoup(r.text, "html.parser") data = soup.find('span', att
from bs4 import BeautifulSoup
import requests
name = input('>')
url = 'http://finance.yahoo.com/q?s={}'.format(name)
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
data = soup.find('span', attrs= {'id':'yui_3_9_1_8_1448922823083_37'.format(name)})
print(data.text)
我认为代码本身可能会工作,但唯一的ID是错误的,因为它说:
'NoneType' object has no attribute 'text'
我想问的是如何找到合适的价格HTML标签(例如google(goog)
)
如果有人有时间,我也想知道如何在更改div id时刮除多只股票(在name=input(“>)上放置while循环,直到我说‘stop’),我不确定如何做到这一点。自从编写代码以来,正在搜索的id已经更改。以下内容应该有效,它还显示了如何保持循环直到输入
end
:
from bs4 import BeautifulSoup
import requests
import re
while True:
symbol = input("Enter symbol: ")
if symbol == 'stop':
break
url = 'http://finance.yahoo.com/q?s={}'.format(symbol)
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
try:
data = soup.find('span', attrs= {'id' : re.compile(r'yfs_.*?_{}'.format(symbol.lower()))})
print('{} = {}'.format(symbol, data.text))
except AttributeError:
print("Unknown symbol: {}".format(symbol))
这将为您提供以下输出:
Enter symbol: GOOG
GOOG = 742.60
Enter symbol: EURGBP
EURGBP = 0.7040
Enter symbol: stop
嗨,martins,我收到一条错误消息,上面写着“name're'未定义”,所以我假设你指的是r.compile,但是,在执行此操作时,我收到另一条错误消息:“Response”对象没有属性“compile”,我已经更新了脚本,只需将
import re
添加到顶部。我还有一个问题(可能是愚蠢的问题),但假设我转到另一个包含股票信息的页面,我如何(在html代码中)找到价格所在的位置?在这个例子中,它是在yfs中,但我怎么才能找到它呢@Martin EvansGo使用普通浏览器访问站点并查找所需库存。然后使用查看源代码并使用find搜索相同的股票价值。