【发布时间】:2020-10-06 15:42:37
【问题描述】:
给定一家公司 ticker 或名称,我想使用 python 获取它的 sector。
我已经尝试了几种可能的解决方案,但都没有成功
最有前途的两个是:
1) 使用来自:https://gist.github.com/pratapvardhan/9b57634d57f21cf3874c的脚本
from urllib import urlopen
from lxml.html import parse
'''
Returns a tuple (Sector, Indistry)
Usage: GFinSectorIndustry('IBM')
'''
def GFinSectorIndustry(name):
tree = parse(urlopen('http://www.google.com/finance?&q='+name))
return tree.xpath("//a[@id='sector']")[0].text, tree.xpath("//a[@id='sector']")[0].getnext().text
但是我使用的是python --version 3.8
我已经能够调整这个解决方案,但最后一行不起作用,而且我对抓取网页完全陌生,所以如果有人有一些建议,我将不胜感激。
这是我当前的代码:
from urllib.request import Request, urlopen
from lxml.html import parse
name="IBM"
req = Request('http://www.google.com/finance?&q='+name, headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req)
tree = parse(webpage)
但是最后一部分不起作用,我对这个 xpath 语法很陌生:
tree.xpath("//a[@id='sector']")[0].text, tree.xpath("//a[@id='sector']")[0].getnext().text
2) 另一个选项是嵌入R 的TTN 包,如下所示:Find which sector a stock belongs to
但是,我想在我的 Jupyter 笔记本中运行它,而运行 ss <- stockSymbols() 需要很长时间@
【问题讨论】:
-
没有
a标记,其id是扇区,例如www.google.com/search?q=MSFT。你有一个你真正想要得到的具体例子吗?如果是这样,请以如此精确的方式丰富您的问题。 -
@keepAlive,例如从这里:marketwatch.com/investing/stock/ibm 我想获得 sector,即:Business/Consumer Services。这显示在图表左侧,股票奖励下方。