печатать содержимое тега "p" после заголовка в HTML - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь выполнить назначение скребка данных. Все это работает, за исключением последней части, в которой мне нужно распечатать описания уязвимостей кибербезопасности, о которых сообщалось на веб-сайте, на основе критериев поиска пользователя.

for index in range(2): 
    response = requests.get(url_values[index])
    content = response.content
    soup = BeautifulSoup(content,"lxml")
    #find the table content
    for header in soup.find_all("h3", string = "Description"):
        text = find_next.("p")
        print (text)

Вот как выглядит HTML в той области, из которой я пытаюсь получить информацию:

 ...<section class="content-band">              
        <div class="content">



            <h3>Risk</h3>                           

            <div><p>Low</p></div>






            <h3>Date Discovered</h3>
            <p>February 12, 2019</p>




            <h3>Description</h3>
            <p>Microsoft Windows is prone to a local information-disclosure 
             vulnerability.                                                                        

            Local attackers can exploit this issue to obtain sensitive 
            information that may lead to further attacks.</p>




            <h3>Technologies Affected</h3>...

Я хочу содержимое (которое находится в элементе p) заголовка "Description" (который является элементом h3). Я пробовал "find_next_sibling" аналогичным образом и не могу заставить его работать.

Любой совет приветствуется.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Вы можете получить текст от элемента-брата h3 следующим образом:

print(soup.find("h3", string="Description").find_next_sibling().text)
0 голосов
/ 12 марта 2019

Вы можете использовать два метода .find() для одного и того же супового объекта, чтобы найти элемент "h3" и затем элемент "p" под этим.

text = soup.find("h3", string="Description").find("p").text

Вам не нужно использовать .find_all(), потому что есть только один элемент "h3" с текстом "Description".

...