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实现生成简单的Makefile文件代码示例
Mar 10 Python
Python中逗号的三种作用实例分析
Jun 08 Python
两个使用Python脚本操作文件的小示例分享
Aug 27 Python
python中模块的__all__属性详解
Oct 26 Python
python的exec、eval使用分析
Dec 11 Python
使用tensorflow实现线性svm
Sep 07 Python
django 外键model的互相读取方法
Dec 15 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
python实现视频分帧效果
May 31 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
python迷宫问题深度优先遍历实例
Jun 20 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集成FCK的函数代码
2008/09/27 PHP
php zip文件解压类代码
2009/12/02 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
python 日期操作类代码
2018/05/05 Python
python 内置模块详解
2019/01/01 Python
Python简单I/O操作示例
2019/03/18 Python
django框架使用方法详解
2019/07/18 Python
django最快程序开发流程详解
2019/07/19 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
大学生自我评价怎样写好
2013/10/23 职场文书
植物生产学专业求职信
2014/08/08 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
MySQL 存储过程的优缺点分析
2021/05/20 MySQL
浅谈MySQL之select优化方案
2021/08/07 MySQL