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

时间:2018-04-27 17:09:58

标签: python beautifulsoup

css class = fb_pagZ 以及此课程下的所有li a

所以在css中会是:fb_pagZ li a,但我很难看到如何在beautifulsoup中代表它。

我目前使用beautifulsoup代码查找页面上fb_pagZ名称的所有类,但我似乎无法进一步过滤到列表项,特别是li a,只有{{ 1}}正在解析的值。

href

示例html输出:

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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以使用BeautifulSoup的select选择器来执行CSS样式选择。

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

soup.select('.fb_pagZ li a')

假设soupBeautifulSoup对象。

另请注意,要仅选择第一个元素,请使用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