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 相关文章推荐
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
python得到windows自启动列表的方法
Oct 14 Python
Python求均值,方差,标准差的实例
Jun 29 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
Pycharm小白级简单使用教程
Jan 08 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
Python运行异常管理解决方案
Mar 09 Python
Python图像读写方法对比
Nov 16 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
python中validators库的使用方法详解
Sep 23 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
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
Python变量和数据类型详解
2017/02/15 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
python实现XML解析的方法解析
2019/11/16 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
一道输出判断型Java面试题
2014/10/01 面试题
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
小车司机岗位职责
2013/11/25 职场文书
环保倡议书格式范文
2014/05/14 职场文书
公司委托书格式范本
2014/09/16 职场文书
车辆转让协议书
2014/09/24 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
2016银行求职自荐信
2016/01/28 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL