在函数中调用时未定义 BeautifulSoup

Posted

技术标签:

【中文标题】在函数中调用时未定义 BeautifulSoup【英文标题】:BeautifulSoup not defined when called in function 【发布时间】:2019-02-20 19:18:40 【问题描述】:

当我在函数内部调用 BeautifulSoup() 时,我的网络抓取工具正在抛出 NameError: name 'BeautifulSoup' is not defined,但是当我在函数外部调用它并将 Soup 作为参数传递时,它可以正常工作。

这是工作代码:

from teams.models import *
from bs4 import BeautifulSoup
from django.conf import settings
import requests, os, string

soup = BeautifulSoup(open(os.path.join(settings.BASE_DIR, 'revolver.html')), 'html.parser')

def scrapeTeamPage(soup):
    teamInfo = soup.find('div', 'profile_info')
...
print(scrapeTeamPage(soup))

但是当我在我的函数中移动 BeautifulSoup 调用时,我得到了错误。

from teams.models import *
from bs4 import BeautifulSoup
from django.conf import settings
import requests, os, string

def scrapeTeamPage(url):
    soup = BeautifulSoup(open(os.path.join(settings.BASE_DIR, url)), 'html.parser')
    teamInfo = soup.find('div', 'profile_info')

【问题讨论】:

不是说Name url not defined吗?因为它没有在您的第二个示例中定义。 编辑以反映我的代码 您是否真的从您的代码中复制了示例?如果不是,请检查拼写错误(例如尝试区分大小写的搜索) 请附上完整的错误信息。 【参考方案1】:

我猜你在做 BeautifulSoup 的一些拼写错误,它区分大小写。如果没有,请在代码中使用 requests 为:

from teams.models import *
from bs4 import BeautifulSoup
from django.conf import settings
import requests, os, string

def scrapeTeamPage(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.content, 'html.parser')
    teamInfo = soup.find('div', 'profile_info')

【讨论】:

【参考方案2】:

先将 BeautifulSoup 导入一个变量,然后再使用它。

    from bs4 import BeautifulSoup as yourVariable

【讨论】:

请不要只发布代码,添加描述以获得更多帮助

以上是关于在函数中调用时未定义 BeautifulSoup的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中调用 OpenCL 函数时未定义的引用

调用内联函数时未定义的引用

Vuejs - 调用方法函数时未定义

FirebaseError:使用无效数据调用函数 Query.where()。不支持的字段值:在进行 Karma 测试时未定义

ExtJs,提交表单时未调用自定义TextField的getValue()函数

解散时未调用 UNNotificationCenterDelegate