此findall()非彼findAll()

本文介绍了如何使用BeautifulSoup的findAll()函数和正则表达式的findall()函数进行网页内容抓取。通过实例展示了在<class'bs4.BeautifulSoup'>类型对象中根据标签查找内容的方法,并对比了字符串查找的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学beautifulsoup时候遇到findAll()函数。起初以为它和findall()是一样的,后来发现“腰”粗了,果然就不是同一个人了啊。他们两个最根本的区别在于:

		findAl()l在<class 'bs4.BeautifulSoup'>类型的对象里根据标签查找。				   
		而findall()在string里面查找。

findAll()

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
html=urlopen("http://www.pythonscraping.com/pages/warandpeace.html") #打开url并将内容存入变量名html里
print(type(html))
bsObj=BeautifulSoup(html)
nameList=bsObj.findAll("span",{"class","green"})#寻找标签是span,其value是‘class=green’的内容
for name in nameList:
    print(name.get_text())

bsObj=BeautifulSoup(html)这一步十分重要,有了这一步才能使用接下来的findAll。

findall()

  1. 和compile结合:
>>> import re
>>> s="adfad asdfasdf asdfas asdfawef asd adsfas"
>>> reObj1 = re.compile('((\w+)\s+\w+)')
>>> reObj1.findall(s)
[('adfad asdfasdf', 'adfad'), ('asdfas asdfawef', 'asdfas'), ('asd adsfas', 'asd')]

reObj1是pattern,而s是string。

  1. 正规用法:pattern和string都在括号内
>>> bsObj="spanno yes sp hu span"
>>> re.findall("span", bsObj)
['span', 'span']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值