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实现简单的多任务mysql转xml的方法
Feb 08 Python
python操作mysql数据库
Mar 05 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
python验证码识别教程之滑动验证码
Jun 04 Python
3个用于数据科学的顶级Python库
Sep 29 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
详解pandas中iloc, loc和ix的区别和联系
Mar 09 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
python初步实现word2vec操作
Jun 09 Python
PyTorch 导数应用的使用教程
Aug 31 Python
如何利用python生成MD5并去重
Dec 07 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中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
vue内置指令详解
2018/04/03 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
vuex入门最详细整理
2020/03/04 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
跟老齐学Python之集合(set)
2014/09/24 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python3 深浅copy对比详解
2019/08/12 Python
flask 实现token机制的示例代码
2019/11/07 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
HTML5地理定位实例
2014/10/15 HTML / CSS
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
活动邀请函范文
2014/01/19 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python