目录
一、报错
二、源码
三、分析
四、解决办法
五、更改后的源码与结果
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)
结果:
Process finished with exit code 0
返回正常,问题解决。