веб-сканирование: как получить номер только из комбинации текста и номера - PullRequest
0 голосов
/ 14 октября 2019

Как я могу очистить номер только во всем этом HTML. В этом примере я хочу, чтобы вывод был «7».

<div class="pagination">
    7 posts • Page <strong>1</strong> of <strong>1</strong>
</div>

Вот мой код:

for num_replys in soup.findAll('div', {'class': 'pagination'}):
        print(num_reply)

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете использовать re для примера, предполагая, что у вас всегда есть посты с номерами в качестве шаблона. Вы могли бы также использовать сплит. Вам необходимо сохранить переменную цикла с тем же именем, и вы хотите работать с ее значением .text.

import requests
from bs4 import BeautifulSoup

html = '''
<div class="pagination">
    7 posts • Page <strong>1</strong> of <strong>1</strong>
</div>

'''

p = re.compile(r'(\d+)\s+posts')
soup = bs(html, 'lxml')

for num_reply in soup.findAll('div', {'class': 'pagination'}):
    print(int(p.findall(num_reply.text)[0]))
...