在页面中查找具有这些属性的项目

2024-09-23 04:34:46 发布

您现在位置:Python中文网/ 问答频道 /正文

css类=fb_pagZ 以及这个类下的所有lia

所以在css中应该是:fb_pagZ li a,但是我很难看到如何在beautifulsoup中表示它

我目前有一个beautifulsoup代码,它可以找到页面上所有名为fb_pagZ的类,但是我似乎无法进一步深入到列表项,特别是li a,只解析href

next_page_base=soup.find_all(class_='fb_pagZ')

html输出示例:

<div class="fb_pagZ">
<li><a href="site.com/img=2" /></li>
</div>

有人能帮忙吗


Tags: 代码div列表basefbpage页面li
1条回答
网友
1楼 · 发布于 2024-09-23 04:34:46

您可以使用BeautifulSoup的select选择器对元素进行CSS样式的选择

因此,根据您的描述,以下应该是:

soup.select('.fb_pagZ li a')

假设,soup是一个BeautifulSoup对象

还要注意,要仅选择第一个元素,请使用select_one

soup.select_one('.fb_pagZ li a')

要迭代选择并获取href属性的值:

for element in soup.select('.fb_pagZ li a'):
    href = element['href']
    # Do stuffs

当不存在这样的元素时,soup.select('.fb_pagZ li a')的输出将是一个空列表,因此上述迭代无论如何都不会发生

如果你想明确地表达空虚:

# We're iterating over the pages, generating URLs
# e.g. if the pages come in querystrings in format
# `?page=2`, appending that and getting
# soup object for the final URL
elements = soup.select('.fb_pagZ li a')
if elements:
    for element in elements:
        href = element['href']

如果您也想匹配href属性:

for element in soup.select('.fb_pagZ li a'):
    try:
        href = element['href']
    except KeyError:
        continue

或者可以使用.get并检查None(这是错误的):

for element in soup.select('.fb_pagZ li a'):
    href = element.get('href')
    if not href:
        continue

相关问题 更多 >