如何为python更改此公式?新手到编码,任何帮助是感激的

如何为python更改此公式?新手到编码,任何帮助是感激的,python,yahoo-finance,Python,Yahoo Finance,您好,我目前已从网上获得此代码。它当前获取以下股票的url和公司信息。有没有办法更新此代码,以显示行业和行业信息来代替url和公司信息?新手编程,因此希望您能提供帮助:) 代码如下: import bs4 as BeautifulSoup from bs4 import SoupStrainer import re import urllib.request import pandas as pd import requests symbols = ['SBUX', 'MET', 'CAT

您好,我目前已从网上获得此代码。它当前获取以下股票的url和公司信息。有没有办法更新此代码,以显示行业和行业信息来代替url和公司信息?新手编程,因此希望您能提供帮助:)

代码如下:

import bs4 as BeautifulSoup 
from bs4 import SoupStrainer
import re
import urllib.request 
import pandas as pd
import requests

symbols = ['SBUX', 'MET', 'CAT', 'JNJ', 'ORCL']


headers = {'User-agent': 'Mozilla/5.0'}

mySymbols = {}

for s in symbols:
    vals = {}
    url = ("https://finance.yahoo.com/quote/{}/profile?p={}".format(s,s))
    webpage = requests.get(url, headers=headers)
    soup = BeautifulSoup.BeautifulSoup(webpage.content) 

    title = soup.find("title")
    tmp = title.get_text()
    rxTitle = re.compile(r'\(.*$')
    coName = rxTitle.sub("", tmp)


for link in soup.find_all('a', href=True):
        try:
            if link['target'] and "" == link['title']:
                m = re.search('yahoo', link['href'], flags=re.IGNORECASE)
                if None == m:

                    url = link['href']
                    webpage = requests.get(url, headers=headers)
                    soup = BeautifulSoup.BeautifulSoup(webpage.content) 

                    vals = {"company":coName, "url":link['href']} 
                    print (s, vals)
                    mySymbols[s] = vals
        except:
            pass

查看其中一个页面,我看到该行业的跨度为'class'='Fw(600)'和'data reactid'=21,行业的跨度为data reactid=25,因此您可以使用

sector = soup.find('span', {'class':'Fw(600)','data-reactid': '21'})
print(sector.next)
industry = soup.find('span', {'class':'Fw(600)','data-reactid': '25'})
print(industry.next)
sector.next获取范围内的内容,而不是返回整个内容

查找“部门”和“行业”跨度并返回后续跨度的更好方法完全编码如下:

import bs4 as BeautifulSoup
import requests

def get_tags(url):
    webpage = requests.get(url, headers=headers)
    soup = BeautifulSoup.BeautifulSoup(webpage.content)
    title = soup.find("title")
    results = {}
    tmp = title.get_text()
    results['title'] = tmp
    spans = soup.findAll('span')
    for i in range(len(spans)):
        if spans[i] and spans[i].text == 'Sector':
            sector = spans[i+1].text
            results['Sector'] = sector
        if spans[i] and spans[i].text == 'Industry':
            industry = spans[i+1].text
            results['Industry'] = industry
    return results

headers = {'User-agent': 'Mozilla/5.0'}
symbols = ['SBUX', 'MET', 'CAT', 'JNJ', 'ORCL']
for s in symbols:
    url = ("https://finance.yahoo.com/quote/{}/profile?p={}".format(s,s))
    results = get_tags(url)
    print(results)

显示的代码缩进不一致。我不确定它应该是什么,所以我不能尝试编辑它,但是如果你可以的话,它会有帮助的。我现在就编辑它。谢谢你的帮助!嘿,如果你能澄清我如何使用它,我将不胜感激。例如,在我的情况下,我应该改变哪些方面?非常感谢。非常感谢你的帮助!非常感谢!另一个问题是,如何更改结果以显示为数据帧?再次感谢