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读取键盘输入的2种方法
Jun 16 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
python图像处理入门(一)
Apr 04 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
python tkinter窗口最大化的实现
Jul 15 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
Python接收手机短信的代码整理
Aug 02 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 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 file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
动手学习无线电
2021/03/10 无线电
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
javascript事件模型介绍
2016/05/31 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
亲子拓展活动方案
2014/02/20 职场文书
岗位聘任书范文
2014/03/29 职场文书
委托公证书
2014/04/08 职场文书
教师对学生的评语
2014/04/28 职场文书
公司建议书怎么写
2014/05/15 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python