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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
wxPython学习之主框架实例
Sep 28 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
Python实现完整的事务操作示例
Jun 20 Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 Python
python中format()函数的简单使用教程
Mar 14 Python
pandas数据分组和聚合操作方法
Apr 11 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
python模糊图片过滤的方法
Dec 14 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
Python字符串的修改方法实例
Dec 19 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 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音乐采集(部分代码)
2007/02/14 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
nodejs微信开发之接入指南
2019/03/17 NodeJs
微信小程序云开发之使用云数据库
2019/05/17 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
简介Django框架中可使用的各类缓存
2015/07/23 Python
Python reduce()函数的用法小结
2017/11/15 Python
python版本的仿windows计划任务工具
2018/04/30 Python
Python根据成绩分析系统浅析
2019/02/11 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
怎样填写就业意向
2014/04/02 职场文书
产品生产计划书
2014/05/07 职场文书
2014年国庆标语
2014/06/30 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang
python解析json数据
2022/04/29 Python
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android