Пытаюсь получить информацию через 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 шт):
Вот так находит нормально:
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
А вот так всё работает:
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"}
При этом произошла конкатенация и всё слилось в один большой идентификатор.
Вероятно вы хотите получить число, хранящееся в этой ссылке, но, как я понял, у вас это не получится. Из тех четырёх чисел, что там расположены вы сможете получить только 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