在使用BeautifulSoup的find或者find_all函数时的属性名与Python保留字冲突的问题

BeautifulSoup是Python里最受欢迎的HTML解析库之一。它可以提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。


find和find_all函数

find_all(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)
注意事项一:

两者看起来定义大部分相似,唯一不同时find_all()中多了一个参数limit。
在实际使用中,find()就相当于find_all()中limit = 1时的特殊情况。

注意事项二:

参数attributes可以匹配到含有特定属性的标签,使用举例如下:

  1. 附加该参数会返回带有该属性的标签。
    soup.find_all('a','course')
    返回带有course属性的a标签。
  2. 也可直接对属性做相关约定,以查找id属性=link1的值作为查找元素。
    soup.find_all(id='link1')
    有则返回该标签,无则返回空。

但是我们在使用keyword的时候偶尔会出现问题,尤其是在尤其是在用 class 属性查找标签的时候,因为class 是 Python中受保护的关键字。也就是说,class 是Python 语言 的保留字,在Python 程序里是不能当作变量或参数名使用的。假如你运行下面的代码,Python 就会因为你误用 class保留字而产生一个语法错误:

soup.find_all(class="green")

BeautifulSoup为此提供了两种解决办法:

  1. 在class后面加上下划线:
    soup.find_all(class_="green")
  2. 使用属性参数把class用引号包起来:
    soup.find_all("",{class:"green"})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值