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计算三角函数之asin()方法的使用
May 15 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
Python+Django搭建自己的blog网站
Mar 13 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
Python中的函数作用域
May 07 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
python类中super() 的使用解析
Dec 19 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 printf输出格式使用说明
2010/12/05 PHP
php 数组使用详解 推荐
2011/06/02 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
利用进制转换压缩数字函数分享
2014/01/02 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
python实现自动化上线脚本的示例
2019/07/01 Python
python简单区块链模拟详解
2019/07/03 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
python中数据库like模糊查询方式
2020/03/02 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
中间件分为哪几类
2012/03/14 面试题
好的自荐信的要求
2013/10/30 职场文书
初中地理教学反思
2014/01/11 职场文书
大学社团计划书
2014/05/01 职场文书
浅析Python中的套接字编程
2021/06/22 Python
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS