在BeautifulSoup中的find_all之后按标签过滤

时间:2016-10-31 16:15:59

标签: python beautifulsoup

我目前正在尝试从网页中的某些表中检索一些信息。为此,我使用了Beautifulsoup的find_all方法。问题是我需要在h2标签下的每个表之前获取一些文本。这就是我使用soup.find_all(['table','h2'])的原因,但我不知道如何从结果中检索标记(以确定它是标题还是表格)。我想要这样的东西:

for tr in soup.find_all(['table','h2']):
            if tr.tag='table':
                print("table info")
            elif tr.tag='h2':
                print("header info")

1 个答案:

答案 0 :(得分:1)

相反,请使用.find_previous_sibling() method转到每个h2元素的上一个table元素:

for table in soup.find_all('table'): 
    header = table.find_previous_sibling("h2").get_text()
    print(header)