Python 网页抓取:代码输出:汤未定义

问题描述 投票:0回答:1

我的雅虎股票网页抓取程序给我错误。 请在下面找到代码

def getdata(符号): headers= {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 如 Gecko) Chrome/123.0.0.0 Safari/537.36'} url = f'https://finance.yahoo.com/quote/XPEV{symbol}' r = requests.get(url,headers=header) 汤= BeautifulSoup(r.text, 'html.parser')

stock ={
    symbol== symbol,
    price== soup.find('fin-streamer',{'class':("Fw(b) Fz(36px) Mb(-4px) D(ib)").text}),
    change== soup.find('fin-streamer',{'class':("Fw(b) Fz(36px) Mb(-4px").text}),

} 打印(汤.标题.文本)

我需要那些比我更有知识的人来帮助我调试代码。

我已经尽了最大的努力,几乎尝试了一切。我需要一位导师来指导我这段旅程。

python-3.x web-scraping beautifulsoup
1个回答
0
投票

您的代码中有很多语法错误,因此请首先重点修复它们。以下是如何从该网站获取股票价格/变化的示例:

import requests
from bs4 import BeautifulSoup


def getdata(symbol):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
    }
    url = f"https://finance.yahoo.com/quote/{symbol}"
    print(url)
    r = requests.get(url, headers=headers)
    soup = BeautifulSoup(r.text, "html.parser")

    stock = {
        "symbol": symbol,
        "price": soup.find(
            "fin-streamer", {"class": "Fw(b) Fz(36px) Mb(-4px) D(ib)"}
        ).text,
        "change": soup.find(
            "fin-streamer", {"class": "Fw(500) Pstart(8px) Fz(24px)"}
        ).text,
    }
    return stock


symbol = "XPEV"
print(getdata(symbol))

打印:

{'symbol': 'XPEV', 'price': '7.47', 'change': '-0.81'}
© www.soinside.com 2019 - 2024. All rights reserved.