Пытаюсь получить информацию через bs4. Выходит ничего. Пустой терминал. Не подскажете что такое?

from bs4 import BeautifulSoup
import requests

mortality = 'https://world-statistics.org'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
print(1)
full_page = requests.get(mortality, headers = headers)
print(2)
soup = BeautifulSoup(full_page.content, 'html.parser')
print(3)
convert = soup.findAll("a", {"id": "popclock", "class": "h2" "font-w300" "text-primary" "animated flipInX"})
print(4)
txt = f'Result {convert}'
print(5)
print(txt)

Вот сам код HTML:

< a id="popclock" class="h2 font-w300 text-primary animated flipInX">7,804,745,379< /a >

Cайт:
https://world-statistics.org/


Ответы (3 шт):

Автор решения: CrazyElf

Вот так находит нормально:

convert = soup.findAll("a", {"id": "popclock", "class": "h2 font-w300 text-primary animated flipInX"})

А у вас просто всё слепляется интерпретатором в одну строку без пробелов, такое, конечно, не может там найтись:

print("h2" "font-w300" "text-primary" "animated flipInX")

Вывод:

h2font-w300text-primaryanimated flipInX
→ Ссылка
Автор решения: AivanF.

А вот так всё работает:

from bs4 import BeautifulSoup
import requests

mortality = 'https://world-statistics.org'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}

content = requests.get(mortality, headers=headers).content
# content = '<a id="popclock" class="h2 font-w300 text-primary animated flipInX">7,804,745,379</a>'

soup = BeautifulSoup(content, 'html.parser')

query = {"id": "popclock", "class": "h2" "font-w300" "text-primary" "animated flipInX"}
convert = soup.findAll("a", query)
print(convert)

У вас зачем-то были кавычки в поисковом запросе:

{"id": "popclock", "class": "h2" "font-w300" "text-primary" "animated flipInX"}

При этом произошла конкатенация и всё слилось в один большой идентификатор.

→ Ссылка
Автор решения: Elusha

Вероятно вы хотите получить число, хранящееся в этой ссылке, но, как я понял, у вас это не получится. Из тех четырёх чисел, что там расположены вы сможете получить только UNDERNOURISHED PEOPLE и CO2 EMISSIONS, так как они у них не динамические, а WORLD POPULATION и GDP (CURRENT US$) обновляются каждую секунду, вероятно при помощи JavaScript. При парсинге они пустые. Вот эти четыре числа с главной страницы:

<a class="h2 font-w300 text-primary animated flipInX" id="popclock"></a>
<a class="h2 font-w300 text-primary animated flipInX"> 792.50</a>
<a class="h2 font-w300 text-primary animated flipInX" id="gdpclock"></a>
<a class="h2 font-w300 text-primary animated flipInX">36,138,285</a>

Коротко говоря, вам нужен Selenium:
Как парсить html страничку с JavaScript в python 3?
Парсинг динамических данных сайта на python

→ Ссылка