×

python

find()和find_all()到底有区别在哪里

我的强少 我的强少 发表于2023-01-03 16:04:08 浏览432 评论0

抢沙发发表评论

from bs4 import BeautifulSoup

html='''
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>
<ul>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
</ul>
<ul>
    <li>a</li>
    <li>b</li>
    <li>c</li>
    <li>d</li>
</ul>
'''

n = 30

# 设置-----的长度值, 没意义就是为了清晰一点

res = BeautifulSoup(html,'html.parser')

ul_1_li = res.find('ul').find_all('li')

# 找到第一个ul标签下的所有li标签

print('--' * n)
print('打印第一个UL标签下的LI内容')

for i in ul_1_li:

# 遍历这个ulli, 把内容提取出来

   print(i.text)
print('--' * n)

ul_all = res.find_all('ul')

# 找到所有的ul标签, 形成一个列表

print('--' * n)
print('打印UL下的原样文本, 相当于UL标签以及下级对应的HTML源码')

for i in ul_all:

    # ul_all形成一个TAG的列表, 遍历列表, 打印列表内字符串

    print(i)

    # 这样可以打印出所有ul标签下的文本, 相当于对应的html源码

print('--' * n)

print('--' * n)
print('打印所有UL标签下的所有LI内容')

for i in ul_all:

# ul_all形成一个TAG的列表, 遍历列表, 相当于3个ul标签包含的内容

    li_all = i.find_all('li')
    # 遍历这个列表以后, 相当于每个ul下的所有li再形成一个包括li的TAG的列表

    for j in li_all:

    # 遍历li的TAG的列表, 把内容提取出来

        print(j.text)
print('--' * n)


群贤毕至

访客