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操作SQLite简明教程
Jul 10 Python
让python同时兼容python2和python3的8个技巧分享
Jul 11 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
python监控nginx端口和进程状态
Sep 06 Python
浅谈pycharm使用及设置方法
Sep 09 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
python3中数组逆序输出方法
Dec 01 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
PHP在线生成二维码代码(google api)
2013/06/03 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
详解JavaScript的变量
2019/04/04 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
python3实现多线程聊天室
2018/12/12 Python
Python给图像添加噪声具体操作
2019/03/03 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
Python如何对XML 解析
2020/06/28 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
空指针到底是什么
2012/08/07 面试题
物理系毕业生自荐信
2013/11/01 职场文书
注塑工厂厂长岗位职责
2013/12/02 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
学校政风行风整改方案
2014/10/25 职场文书
2014年招生工作总结
2014/11/26 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书