Python - 帮助获取特定值

时间:2017-10-30 17:12:22

标签: python beautifulsoup

对python来说相当新。

我想从

获得股票价格
url = "https://finance.yahoo.com/quote/" + readsymbollist[i]
sauce = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(sauce,'lxml')

stockcompany = soup.find('h1', {'data-reactid': '7'}).text
#getcurrentprice = soup.find('span',{'data-reactid': '35'}).text

getcurrentprice = soup.find('span',{'class':'Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)'})

这是班级,但它没有返回任何东西。

此代码也用于处理data-reactid:35但不再适用。为什么datareactid 7工作,但我不再在页面上看到特定的跨度。

谢谢任何人

3 个答案:

答案 0 :(得分:0)

请参阅这些功能的文档。可能在最后一个函数中你需要逃避(' \')特殊字符,比如",'等等。

答案 1 :(得分:0)

您可能需要查看pandas-datareader软件包,我已经使用过它并发现它非常有用。它很擅长从雅虎财经获得股票价格。

答案 2 :(得分:0)

根据您尝试获取的元素,可能首先要找到最顶层的代码,在这种情况下为'div',然后找到'span'代码,应该给出价格。

# url = "https://finance.yahoo.com/quote/" + readsymbollist[i]
url = "https://finance.yahoo.com/quote/" + 'UA'  # example
sauce = urllib2.urlopen(url).read()
soup = bs4.BeautifulSoup(sauce,'lxml')

stockcompany = soup.find('h1', {'data-reactid': '7'}).text

# find the parent div
div = soup.find('div', {'class': 'Mt(6px) smartphone_Mt(15px)'}) 

结果:

print stockcompany           # UA - Under Armour, Inc.

# find the 'span' tag inside the div from previous step
print div.find('span').text  # 14.74

希望这有帮助。