Python导入bs4库报错的解决方法

目录

一、报错

二、源码

 三、分析

四、解决办法

五、更改后的源码与结果


一、报错

        AttributeError: partially initialized module 'bs4' has no attribute 'BeautifuSoup' (most likely due to a circular import)

大概意思是:bs4模块的BeautifuSoup没有相对应的属性,也就是说不存在这个函数。

AttributeError: partially initialized module 'bs4' has no attribute 'BeautifuSoup' (most likely due to a circular import)

二、源码

import bs4
import requests
# 目标url
url = "https://www.dy2018.com/"

# 发送请求,获取源码
resp = requests.get(url)
resp_content = resp.text

# 把源码给bs4,进行处理
result = bs4.BeautifuSoup(resp_content, "html.parser")

# 定位
result_name = result.find("div", class_="title_all")
print(result_name)

 三、分析

        代码是没有问题的(没有写完,因为from bs4 import BeautifulSoup也会报错,所以我直接使用bs4.BeautifulSuop函数),通过查找,发现是我创建的Python文件和导入的bs4的库名字一样,在导入库时(from bs4 import BeautifulSoup)会报错,在代码使用模块封装好的函数也会报错。

        我们创建的Python文件和bs4库名字一样,产生了覆盖,导致我们引入库和使用封装好的模块时,编辑器误认为我们导入的是我们创建的Python文件(我们自己创建的名字为bs4的Python文件当然没有这些封装好的函数),导致产生了报错。

        结论:bs4.py(我们创建的Pyhton文件)->覆盖掉了导入的bs4.py(库文件)文件(引入时产生覆盖)。

四、解决办法

        解决办法:把Python文件名更改为其它的名字,把覆盖去掉,就可以正常使用了。

五、更改后的源码与结果

源码:

# 导入需要使用的库
import requests
from bs4 import BeautifulSoup  # 文件名改好了,没有报错,我们直接导入使用
# 目标url
url = "https://www.dy2018.com/"

# 发送请求,获取源码
resp = requests.get(url)
resp_content = resp.text

# 把源码给bs4,进行处理
result = BeautifulSoup(resp_content, "html.parser")

# 定位
result_name = result.find("div", class_="title_all")
print(result_name)

结果:

<div class="title_all"><p><span style="float:left;"><a href="https://www.dy2018.com/html/gndy/dyzz/index.html">2022ÐÂƬ¾«Æ·</a></span><em style="float:right;"><a href="https://www.dy2018.com/html/gndy/dyzz/index.html">¸ü¶à&gt;&gt;</a></em><div style="float:right;margin:2px 20px 0 0"></div></p></div>

Process finished with exit code 0

返回正常,问题解决。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值