Как я могу распечатать содержимое каждого тега <span>, который идет после каждого тега <strong>с BeautifulSoup? - PullRequest
0 голосов
/ 25 февраля 2020

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

import bs4 as bs
from urllib.request import urlopen, Request
import urllib


    #all strong tags
    strong_tags = soup.find_all('strong')
    for element in strong_tags:
        element.extract()
        print(element.text)

и вывод, который я получаю:

severity:  
ID: 
File Name: 
Version: 
Family: 
Published: 
Dependencies: 
Risk Factor: 
Required KB Items: 

Содержимое тегов span должно go после каждого двоеточия, но я не могу его получить к. Вот часть html Я соскоб.

<div class="col-md-4 plugin-single__sidebar">
<h4 class="u-m-t-2">Plugin Details</h4>
<div>
    <p>
        <strong>Severity
            <!-- -->: 
        </strong>
        <span>Critical</span>
    </p>
</div>
<div>
    <p>
        <strong>ID
            <!-- -->: 
        </strong>
        <span>14612</span>
    </p>
</div>
<div>
    <p>
        <strong>File Name
            <!-- -->: 
        </strong>
        <span>aix_IY40501.nasl</span>
    </p>
</div>

1 Ответ

0 голосов
/ 26 февраля 2020

Попробуйте это.

from simplified_scrapy import SimplifiedDoc
html = '''
<div class="col-md-4 plugin-single__sidebar">
<h4 class="u-m-t-2">Plugin Details</h4>
<div>
    <p>
        <strong>Severity
            <!-- -->: 
        </strong>
        <span>Critical</span>
    </p>
</div>
<div>
    <p>
        <strong>ID
            <!-- -->: 
        </strong>
        <span>14612</span>
    </p>
</div>
<div>
    <p>
        <strong>File Name
            <!-- -->: 
        </strong>
        <span>aix_IY40501.nasl</span>
    </p>
</div>
'''
doc = SimplifiedDoc(html)
# First method
spans = doc.selects('strong>next()')
print (spans)
# Second method
strongs = doc.selects('strong')
for strong in strongs:
    span = strong.next
    print (strong.text,span.text)

Результат:

[{'tag': 'span', 'html': 'Critical'}, {'tag': 'span', 'html': '14612'}, {'tag': 'span', 'html': 'aix_IY40501.nasl'}]
Severity : Critical
ID : 14612
File Name : aix_IY40501.nasl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...