为什么
soup = BeautifulSoup(response.content, 'html.parser')
字符串
返回
<ul><li><li><li></li></li></li></ul>
型
而不是
<ul><li></li><li></li><li></li></ul>
型
完整代码
from datetime import datetime
import requests
from bs4 import BeautifulSoup
def is_holiday_or_weekend():
current_year = datetime.now().year
today = datetime.now().strftime('%Y-%m-%d')
url = f"https://www.kalendorius.today/nedarbo-dienos/{current_year}"
# Start a session to maintain cookies
session = requests.Session()
try:
# Send initial request to get PHPSESSID cookie
session.get(url)
headers = {
'User-Agent': 'Mozilla/5.0',
'Accept': 'application/json',
}
# Fetch the holiday data with headers and cookies
response = session.get(url, headers=headers)
response.raise_for_status()
# Parse the HTML content
soup = BeautifulSoup(response.content, 'html.parser')
print(soup) # here is problems, wrong html structure
# Extract <li> elements within <ul> of class 'calendar-items-list'
holidays_elements = soup.find_all('ul', class_='calendar-items-list')
holidays = {}
for ul in holidays_elements:
print(ul)
for index, li in enumerate(ul.find_all('li')):
date, name = li.get_text().strip().split(' - ', 1)
if date not in holidays: # Add this check to avoid duplicates
holidays[date] = name
# Check if today is a holiday or a weekend
if today in holidays or datetime.now().weekday() >= 5:
return True
return False
except requests.RequestException as e:
print(f"Error fetching holiday data: {e}")
return None
# Usage
if is_holiday_or_weekend():
print("Today is a holiday or weekend.")
else:
print("Today is a regular working day.")
型
如何打印每个li元素?
1条答案
按热度按时间tzcvj98z1#
您的代码对我来说很好,并打印出:“Today is a regular working day."。
顺便说一下,你可以简化
holidays
字典的构建方式,如下所示:字符串
乌普图特
型