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 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
python使用fork实现守护进程的方法
Nov 16 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
Python中类的创建和实例化操作示例
Feb 27 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
python爬虫中多线程的使用详解
Sep 23 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 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 什么是PEAR?
2009/03/19 PHP
PHP面向对象精要总结
2014/11/07 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
用python实现刷点击率的示例代码
2019/02/21 Python
详解爬虫被封的问题
2019/04/23 Python
解决python对齐错误的方法
2020/07/16 Python
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
实习生自荐信范文分享
2013/11/27 职场文书
幼儿园老师寄语
2014/04/03 职场文书
二年级学生评语大全
2014/04/23 职场文书
党员活动日总结
2014/05/05 职场文书
班组拓展活动方案
2014/08/14 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
2014年保育员工作总结
2014/12/02 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
欢送领导祝酒词
2015/08/12 职场文书
事业单位岗位说明书
2015/10/08 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python