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')
有人可以帮忙吗?
答案 0 :(得分:1)
您可以使用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