import requests
from datetime import date, timedelta
import pandas as pd
from bs4 import BeautifulSoup
import csv
start_date = date.today()
days_in_period = 7
url = "https://world-weather.ru/"
response = requests.get(url)
soup=BeautifulSoup(response.content,'html.parser')
weather_block = soup.find("div", class_="weather")
day_of_week = weather_block.find(text=lambda text: text.strip() == "День недели").text.strip()
date = weather_block.find('a', href=lambda href: href.startswith("/weather/"))['title'].text.strip().split('/')[1]
temp = weather_block.find_all('span', class_='temperature')[0].text.split(' ')[0]
df = pd.DataFrame({
'День недели': [day_of_week],
'Дата': [date],
'Температура': [temp]
})
df.to_csv(r' D:\python\weather.csv')
day_of_week = weather_block.find(text=lambda text: text.strip() == "День недели").text.strip()
^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'find'
response.status_code
равен 403. То есть html что бы парсить его супом сервер не прислал. Можно добавить ему headers.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
response = requests.get(url, headers=headers)
Теперь сервер пришлет html status_code должен быть 200 (по крайней мере у меня работает). Который можно парсить средствами beatifulsoup. Правильно ли написан парсинг, нет не правильно. Такого класса как ты ищешь там нет. Ну это все самостоятельно, объект сервер пришлет валидный для парсинга.