Найти - Пользователи
Полная версия: Парсер текста с сайта погоды
Начало » Python для новичков » Парсер текста с сайта погоды
1
beersir
Добрый день 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ºС.”
py.user.next
Пиши код в тегах, чтобы он передавался точно на форуме
[code python]
здесь код
[/code]
Ocean
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 ºС.


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

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

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

Но про это лучше у опытных местных спросите, я сама новичок в написании программ.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB