Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str


Posted in Python onAugust 07, 2019

在python的Beautiful Soup 4 扩展库的使用过程中出现了

TypeError: list indices must be integers or slices, not str

这个错误,这里就分析一下为什么会报错以及如何解决。

这个错误的意思是'类型错误:list的索引必须是'integers'或者'slices'不能是'str'

我出现错误的代码:

#引入库
from bs4 import BeautifulSoup
#读取页面
soup = BeautifulSoup(open('index.html'))
#获取标签
img_tag = div.select("img")
#获取标签属性(这里报错)
src = img_tag['src']
#输出
print(src)

经过检查对比后我发现错误原因

就是获取标签时获取的是list数据而不是tag

主要原因如下:

主要就是获取的内容和自己认为的有偏差。

也就是find()和find_all(),select()和select_one()的区别。

当使用

find()
select_one()

时,获得的是一个标签

类型为

<class 'bs4.element.Tag'>

所以可以使用tag['class']取值

当使用

find_all()
select()

时,获得的是组标签(就算只有一个标签也是一组)

类型为

#find_all()的返回值类型
<class 'bs4.element.ResultSet'>
#select()的返回值类型
<class 'list'>

这时,我们要取值就需要先定位是list(ResultSet)中的那个标签在取值

例如tag[0]['class']

解决方法

方法一:

#引入库
from bs4 import BeautifulSoup
#读取页面
soup = BeautifulSoup(open('index.html'))
#获取标签
img_tag = div.select("img")
#获取标签属性(这里有改动)
src = img_tag[0]['src']
#输出
print(src)

因为我知道页面中的结构可以确保获得的第一个bag为我需要的标签。
所以使用src = img_tag[0]['src']来获取属性信息。

方法二:

#引入库
from bs4 import BeautifulSoup
#读取页面
soup = BeautifulSoup(open('index.html'))
#获取标签
img_tag = div.select_one("img")
#获取标签属性(这里有改动)
src = img_tag['src']
#输出
print(src)

同上理,这样修改也是可以成功的。

出现这种问题还是因为自己不用心,还是要时刻提醒自己。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 字符串格式化代码
Mar 17 Python
Python实现删除文件但保留指定文件
Jun 21 Python
Python的标准模块包json详解
Mar 13 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
在双python下设置python3为默认的方法
Oct 31 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
Django框架封装外部函数示例
May 28 Python
python批量处理txt文件的实例代码
Jan 13 Python
python判断正负数方式
Jun 03 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
Python实现自动签到脚本功能
Aug 20 Python
Python使用UDP实现720p视频传输的操作
Apr 24 Python
python利用7z批量解压rar的实现
Aug 07 #Python
django基础学习之send_mail功能
Aug 07 #Python
python实现本地批量ping多个IP的方法示例
Aug 07 #Python
Django model 中设置联合约束和联合索引的方法
Aug 06 #Python
对django 模型 unique together的示例讲解
Aug 06 #Python
python django model联合主键的例子
Aug 06 #Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 #Python
You might like
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
document.getElementById介绍
2011/09/13 Javascript
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
销售高级职员求职信
2013/10/29 职场文书
促销活动策划方案
2014/01/12 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
2014年统计工作总结
2014/11/21 职场文书
会计工作总结范文2014
2014/12/23 职场文书
安全生产学习心得体会
2016/01/18 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
节约用水广告语60条
2019/11/14 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
Go语言基础函数基本用法及示例详解
2021/11/17 Golang