Уведомления

Группа в Telegram: @pythonsu

#1 Май 2, 2021 15:21:09

beersir
Зарегистрирован: 2021-05-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер текста с сайта погоды

Добрый день 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)

Прикреплённый файлы:
attachment Снимок2.PNG (176,3 KБ)

Офлайн

#2 Май 2, 2021 23:47:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Парсер текста с сайта погоды

Пиши код в тегах, чтобы он передавался точно на форуме

[code python]
здесь код
[/code]



Отредактировано py.user.next (Май 2, 2021 23:48:12)

Офлайн

#3 Май 4, 2021 00:34:43

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Парсер текста с сайта погоды

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 ºС.


Офлайн

#4 Май 5, 2021 15:40:30

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Парсер текста с сайта погоды

beersir
На сегодня исходная страница для парсинга уже поменялась, добавилась таблица. Теперь нужный <p> будет 15ым элементом.
Вероятно, страница постоянно будет меняться.
Чтобы каждый раз не переделывать, надо дополнительное условие подобрать. Вам лучше знать, какой там неизменный текст в искомом абзаце остается.

Я подумала, что всегда будет эта фраза: “Прогноз погоды на 04.05.2021 (по данным Таймырского ЦГМС - филиала ФГБУ):”. Значит, фразу можно взять как контрольную, только дату менять динамически.

Тогда удобно себе уведомлялку сделать и вручную не контролировать ежедневно. Настроить задачу запуска скрипта в crontab и проверять найден ли ожидаемый текст, если не найден, то слать письмо в свою почту с уведомлением, что скрипт требует починки.

Но про это лучше у опытных местных спросите, я сама новичок в написании программ.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version