However 2023-02-12 20:11 采纳率: 66.7%
浏览 16
已结题

module的对象没有len,如何解决?(语言-python)

# 导入三个工具包
import requests
from bs4 import BeautifulSoup
import urllib.request
import html


def getImg():
    # 解析网站
    url = requests.get("https://www.buxiuse.com/?page=2")  # 爬取网站url
    # 获取网站数据
    print(html)
    # 打印输出网站数据


print(html)

getImg()

"""
   获取BeautifulSoup对象
   html 表示被解析的html格式的内容
   html.parser表示解析用的解释器
"""

soup = BeautifulSoup(html, "html.parser")
# 获取所有img标签
girl = soup.find_all('img')
# 打印标签
print(girl)

x = 0
# 获取图片路径
for i in girl:
    # 获取src路径
    src = i.get('src')
    print(src)
    # 下载图片 利用urllib
    urllib.request.urlretrieve(src, "./image/%s.jpg" % x)
    x += 1
    print("正在下载第%d张:" % x)


运行结果

<module 'html' from 'D:\\python\\lib\\html\\__init__.py'>
<module 'html' from 'D:\\python\\lib\\html\\__init__.py'>
Traceback (most recent call last):
  File "C:\Users\王林\PycharmProjects\pythonProject\Demo.py", line 26, in <module>
    soup = BeautifulSoup(html, "html.parser")
  File "F:\pychrom文件\lib\site-packages\bs4\__init__.py", line 313, in __init__
    elif len(markup) <= 256 and (
TypeError: object of type 'module' has no len()

Process finished with exit code 1


求告诉我这module的对象没有len()怎么处理,谢谢!

  • 写回答

3条回答 默认 最新

  • 小小小小人水豚 2023-02-12 21:04
    关注

    第26行,BeautifulSoup第1个参数应该是个字符串类型,猜测你的本意应该是getImg()获取到的内容,但是现在传的是html,而这个html是import 导入进来的,应该是个模块吧,这个有何用呢?建议的解决思路:
    getImg()要有返回值:

    
    def getImg():
        # 解析网站
        url = requests.get("https://www.buxiuse.com/?page=2")  # 爬取网站url
        # 获取网站数据
        return url.content
    
    soup = BeautifulSoup(getImg(), "html.parser")
    

    有帮助的话,请点采纳~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月22日
  • 已采纳回答 2月14日
  • 创建了问题 2月12日