big_song_82 2021-12-15 13:46 采纳率: 25%
浏览 29
已结题

关于type后bs4对象一些属性出现奇怪问题

问题遇到的现象和发生背景

跟着书里的例子学习bs4,通过向bs4.beautifulSoup()传递一个File对象后,type()其类型。发现问题:

  1. 按照书里讲述,type(exampleSoup)应该得到的是list类,而我返回的是:bs4.element.ResultSet, 请问是书写错了么?
  2. 当我在第二行加入print(exampleFile.read())后再运行,程序就提示我在type(elems[0])的list index out of range越界了。这又是怎么回事儿?
  3. 上面两个问题之间有关联么?
    问题相关代码,请勿粘贴截图
exampleFile = open('example.html')
# print(exampleFile.read())
exampleSoup = bs4.BeautifulSoup(exampleFile,'html.parser')
print(type(exampleSoup))
elems = exampleSoup.select('#author')
print(type(elems)) 
print(len(elems))
print(type(elems[0]))
print(elems[0].getText())
print(str(elems[0]))
print(elems[0].attrs)
运行结果及报错内容

问题1. 第二行返回类型不是书中说的list

<class 'bs4.BeautifulSoup'>
<class 'bs4.element.ResultSet'>
1
<class 'bs4.element.Tag'>
Song Wei
<span id="author">Song Wei</span>
{'id': 'author'}
[Finished in 327ms]

问题2. 加入print(exampleFile.read())后,程序报了list越界错

<html>
<head><title>The Website Title</title></head>
<body>
<p>Download my <strong>Python</strong> book from <a href="http://www.baidu.com">my site</a>.</p>
<p class="slogan">Learn python the easy way!</p>
<p>By <span id="author">Song Wei</span></p>
</body>
</html>Traceback (most recent call last):

<class 'bs4.BeautifulSoup'>
<class 'bs4.element.ResultSet'>
0
  File "D:\chwlsw\py-test\chapter11_web\mapIt.py", line 38, in <module>
    print(type(elems[0]))
IndexError: list index out of range
[Finished in 301ms]


我想要达到的结果

请帮忙勘误,感谢!

  • 写回答

1条回答 默认 最新

  • user-from-future 2021-12-15 14:39
    关注

    正常select后应该返回list,这是select的根源码:

    img

    具体情况可能需要知道你的bs4版本,我的是4.7.1版本的

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月16日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)