Почему при парсинге сайта выдаёт None (bs4)

Рейтинг: -1Ответов: 1Опубликовано: 04.04.2023

Почему при парсинге сайта программа не может найти b-page__container? Вместо этого программа выдаёт None.

Как это исправить?

https://yandex.ru/pogoda/region/225

import requests  
from bs4 import BeautifulSoup

link = "https://yandex.ru/pogoda/region/225"
responce = requests.get(link).text
soup = BeautifulSoup(responce, 'lxml')

towns = soup.find("div", class_="b-page__container")
print(towns)

введите сюда описание изображения

Ответы

▲ 0

Для того, что бы получить данные, вам надо передать словарь headers вместе с запросом, в этом заголовке достаточно передать ключ "Cookie": "j=-h9......". Эти данные берёте во вкладке Network Вашего браузера в Request Headers. Вот пример рабочего кода, Вам надо только отредактировать headers подставив ваши данные из браузера:

import requests  
from bs4 import BeautifulSoup


link = "https://yandex.ru/pogoda/region/225"
headers = {
        "Cookie": "ТУТ ДОЛЖНЫ БЫТЬ ВАШИ ДАННЫЕ Cookie из БРАУЗЕРА",
    }

session = requests.Session()
session.headers.update(headers)

responce = session.get(link).content
soup = BeautifulSoup(responce, 'html.parser')

regions = soup.find("div", "b-page__container")
place_list = regions.find_all("div", "place-list")
for place in place_list:
    regions_names = place.find_all("a")
    for a in regions_names:
        print(f"Название региона: {a.text}")

Вот, что возвращает этот код:

...
Название региона: Чукотский автономный округ
Название региона: Ямало-Ненецкий автономный округ
Название региона: Ярославская область