44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
import requests
|
|
from bs4 import BeautifulSoup
|
|
import re
|
|
|
|
BASE_URL = "https://www.bestattung-aichinger.at"
|
|
URL = f"{BASE_URL}/traueranzeigen--5683197-de.html"
|
|
|
|
def get_page_content(url):
|
|
page = requests.get(url)
|
|
return BeautifulSoup(page.content, "html.parser")
|
|
|
|
def extract_data(soup):
|
|
death_table = soup.find("ul", attrs={"class": "homepage_unterseiten_layout_todesanzeigen"})
|
|
death_table_data = death_table.find_all("li")
|
|
for row in death_table_data:
|
|
date_span = row.find('span', class_='homepage_unterseiten_layout_datum')
|
|
date_death = date_span.text.replace('†', '').strip() if date_span else None
|
|
|
|
title_span = row.find('span', class_='homepage_unterseiten_layout_titel')
|
|
|
|
if title_span:
|
|
title_text = title_span.get_text(separator='\n')
|
|
title_parts = title_text.split('\n')
|
|
title_left = title_parts[0].strip() if len(title_parts) > 0 else None
|
|
title_right = title_parts[1].strip() if len(title_parts) > 1 else None
|
|
else:
|
|
title_left = title_right = None
|
|
|
|
print(date_death, title_left, title_right)
|
|
|
|
def find_next_page(current_url):
|
|
match = re.search(r'\?p=(\d+)', current_url)
|
|
if match:
|
|
next_page_num = int(match.group(1)) + 1
|
|
else:
|
|
next_page_num = 2
|
|
next_page_url = f"{BASE_URL}/traueranzeigen--5683197-de.html?p={next_page_num}"
|
|
return next_page_url
|
|
|
|
current_url = URL
|
|
while current_url:
|
|
soup = get_page_content(current_url)
|
|
extract_data(soup)
|
|
current_url = find_next_page(current_url) |