Форум сайта python.su
Добрый день junior'ы и senior'ы, меня терзает проблема парсинга информации с сайта, никак не могу взять нужный текст, как бы не пытался… Подскажите решение данной задачи
Вот код:
from bs4 import BeautifulSoup
import requests
URL = 'https://www.norilsk-city.ru/meteo/'
HEADERS = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36’, ‘accept’: ‘*/*’
}
def parseinfo():
response = requests.get(URL, headers = HEADERS)
soup = BeautifulSoup(response.content, ‘html.parser’)
items = soup.findAll('div', class_ = ‘textContent’)
comps =
for item in items:
comps.append({
‘title’: item.find('p').get_text(strip = True)
})
for comp in comps:
print(comp)
parseinfo()
P.S. в строчке ‘title’: item.find('p').get_text(strip = True), “р” это пробный вариант, который выдаёт: “Автодорога Норильск-Кайеркан-Алыкель открыта для движения всех видов автотранспорта.”
Но мне надо чтобы было: “Прогноз погоды на 03.05.2021 (по данным Таймырского ЦГМС - филиала ФГБУ): Ночью без осадков, днем местами небольшой мокрый снег, дождь, видимость 1-2 км, ветер юго-восточный 8-13 м/с, порывы 17-22 м/с. Температура воздуха ночью -1…-6ºС, днем 0…+5ºС.”
Отредактировано beersir (Май 4, 2021 20:32:37)
Прикреплённый файлы:
Снимок2.PNG (176,3 KБ)
Офлайн
Пиши код в тегах, чтобы он передавался точно на форуме
[code python]
здесь код
[/code]
Отредактировано py.user.next (Май 2, 2021 23:48:12)
Офлайн
beersir
from bs4 import BeautifulSoup import requests def parseinfo(URL): response = requests.get(URL) soup = BeautifulSoup(response.content, 'lxml') item = soup.select("p") return item[2].text.strip() print(parseinfo('https://www.norilsk-city.ru/meteo/'))
Прогноз погоды на 04.05.2021 (по данным Таймырского ЦГМС - филиала ФГБУ): небольшой снег, местами умеренный мокрый снег, дождь, видимость 1-2 км, ветер южный с переходом на западный 7- 12 м/с, в отдельных районах порывы 15-20 м/с. Температура воздуха ночью и днем +3…-2 ºС.
Офлайн
beersir
На сегодня исходная страница для парсинга уже поменялась, добавилась таблица. Теперь нужный <p> будет 15ым элементом.
Вероятно, страница постоянно будет меняться.
Чтобы каждый раз не переделывать, надо дополнительное условие подобрать. Вам лучше знать, какой там неизменный текст в искомом абзаце остается.
Я подумала, что всегда будет эта фраза: “Прогноз погоды на 04.05.2021 (по данным Таймырского ЦГМС - филиала ФГБУ):”. Значит, фразу можно взять как контрольную, только дату менять динамически.
Тогда удобно себе уведомлялку сделать и вручную не контролировать ежедневно. Настроить задачу запуска скрипта в crontab и проверять найден ли ожидаемый текст, если не найден, то слать письмо в свою почту с уведомлением, что скрипт требует починки.
Но про это лучше у опытных местных спросите, я сама новичок в написании программ.
Офлайн