如何使用特定的h1标签文本名称访问div类?

时间:2020-07-15 22:36:31

标签: python html css beautifulsoup

我需要获取特定H1类文本的div类内的信息。下面是HTML代码:

html
    <head>
    </head>
    <body>
        <h1 class="SAyv5">WHO Coronavirus disease (COVID-19) situation reports</h1>
       <div> This content1 I need </div>
     <div>  This content2 I need </div>
       <div>  This content3 I need </div>
        <p>This is my first page.</p>
        <h1>A secondary header.</h2>
    <div>  This content4 I need </div>
        <p>Some more text.</p>
    </body>

在这里,我只需要H1标签文本“ WHO冠状病毒病(COVID-19)状况报告”下的div类内容。同样,有多个H1标签,但我只需要访问它们一个H1标签文本。 我必须使用“ WHO冠状病毒病(COVID-19)状况报告”文本来访问它们。

2 个答案:

答案 0 :(得分:0)

如果您需要在CSS中访问它们,这就是我的解决方法。

html

    <head>
    </head>
    <body>
       <div id="content1Container">
        <h1 class="SAyv5">WHO Coronavirus disease (COVID-19) situation reports</h1>
        <div> This content1 I need </div>
        <div>  This content2 I need </div>
        <div>  This content3 I need </div>
       </div>
       
       <div id="otherContentContainer">
         <p>This is my first page.</p>
         <h1>A secondary header.</h2>
         <div>This content4 I need</div>
         <p>Some more text.</p>
       </div>
       
    </body>

CSS

#content1Container div{
  background-color: red;
}

答案 1 :(得分:0)

如果我对您的理解正确,那么您可能正在寻找这样的东西:

ht = """your html above, fixed"""
from bs4 import BeautifulSoup as bs
soup = bs(ht,'lxml')

targets = soup.find_all('h1',string="WHO Coronavirus disease (COVID-19) situation reports")
for target in targets:
    for t in target.fetchNextSiblings('div'):
        print(t.text)

这应该输出<div>元素之后的所有<h1>元素的文本,并带有所需的文本。