首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >beautifulSoap抓取错误NameError:未定义名称“soup”

beautifulSoap抓取错误NameError:未定义名称“soup”
EN

Stack Overflow用户
提问于 2020-04-09 14:46:36
回答 2查看 1.2K关注 0票数 0

我从网络抓取开始,我得到了一个错误:

我得到了这个错误:

代码语言:javascript
复制
 Traceback (most recent call last):
  File "scrape.py", line 14, in <module>
    print(str(parsePrice()))
  File "scrape.py", line 9, in parsePrice
    price=soup.find('span', {'class': 'Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)'}).text
NameError: name 'soup' is not defined

这是我的代码scrape.py:

代码语言:javascript
复制
import bs4
import requests
from bs4 import BeautifulSoup

def parsePrice():
    r=requests.get('https://finance.yahoo.com/quote/FB?p=FB')
    soap=bs4.BeautifulSoup(r.text, 'xml')

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

while True:
    print('The current price is: ')
    print(str(parsePrice()))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-09 15:44:10

即使您修复了soup问题,您的脚本仍然无法工作,因为这不是您想要使用xml解析器的地方。您应该选择html.parserlxmlhtml5lib。此外,您还使用了复合类,这可能会在不久的将来导致任何错误。不过,我会这样做:

代码语言:javascript
复制
import time
import requests
from bs4 import BeautifulSoup

link = 'https://finance.yahoo.com/quote/FB?p=FB'

def parsePrice(url):
    r = requests.get(url,headers={"User-Agent":"Mozilla/5.0"})
    soup = BeautifulSoup(r.text,'html.parser')
    price = soup.find("span",class_="Mb(-4px)").text
    return price

while True:
    print('The current price is:',parsePrice(link))
    time.sleep(3)
票数 0
EN

Stack Overflow用户

发布于 2020-04-09 14:48:34

变更线

代码语言:javascript
复制
soap=bs4.BeautifulSoup(r.text, 'xml')

代码语言:javascript
复制
soup=bs4.BeautifulSoup(r.text, 'xml')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61123865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档