пишу парсер по сайту, получился вот такой код
хотел бы уйти от проверки day в цикле. Если ставить такую проверку перед циклом, то идет проблема ведущего нуля, он не подставляется в ссылку для парсинга.
хотел бы уйти от проверки day в цикле. Если ставить такую проверку перед циклом, то идет проблема ведущего нуля, он не подставляется в ссылку для парсинга.
Python:
from bs4 import BeautifulSoup
import requests
url = 'https://sinoptik.com.ru/погода-санкт-петербург/'
class GetForecast:
def get_html(self, url):
headers = {'user-agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
html = response.text
return html
def get_weather(self, html):
forecast_in_range = []
soup = BeautifulSoup(html, 'html.parser')
temperature = soup.find('b').get_text(strip=True)
day = soup.find('p', class_='weather__content_tab-day').get_text(strip=True)
date = soup.find('p', class_='weather__content_tab-date day_red').get_text(strip=True)
month = soup.find('p', class_='weather__content_tab-month').get_text(strip=True)
weather = soup.find('label', class_='show-tooltip').get_text(strip=True)
print(f'{day} {date} {month} {temperature} {weather}')
forecast_in_range.append(
{'temperature': temperature, 'date': date, 'month': month, 'day': day, 'weather': weather})
return forecast_in_range
def parse(self):
forecast_in_range = []
day_from = input('Введите день c которого вывести прогноз погоды:')
day_to = input('Введите день до которого вывести прогноз погоды:')
month = input('Введите месяц в котором вывести прогноз погоды:')
year = input('Введите год в котором вывести прогноз погоды:')
year = int(year.strip())
day_from=int(day_from.strip())
month= int(month.strip())
day_to=int(day_to.strip())
if month >= 10:
month = month
else:
month = '0' + str(month)
print(month)
print(year)
print(day_to)
print(day_from)
for day in range(day_from, day_to):
if day >= 10:
html = self.get_html(url + f'{year}-{month}-{day}')
forecast_in_range.extend(self.get_weather(html))
else:
html = self.get_html(url + f'{year}-{month}-0{day}')
forecast_in_range.extend(self.get_weather(html))
return forecast_in_range
forecast = GetForecast()
forecast_in_range = forecast.parse()
print(forecast_in_range)