Очистка с помощью BS4 внезапно прекращается... извлекается только страницаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Очистка с помощью BS4 внезапно прекращается... извлекается только страница

Сообщение Anonymous »

Я хочу собрать данные из домов престарелых в Германии с этой обзорной страницы — другими словами, поместить их в таблицу Calc с помощью веб-скребка.
Я представляю себе парсер, который работает, например, с BeautifulSoup. - и, возможно, Панды. Я предпочитаю работать в Google Colab.
Для меня здесь важно следующее:
а. название объекта
б. адрес
c. сайт
d. адрес электронной почты, если он доступен
e. краткое описание — если его еще можно найти на странице.
Моя попытка — сделать это с помощью Pandas и сохранить во фрейме данных, чтобы данные записывались в файл. .
здесь ДАННЫЕ - или веб-сайт:
страница обзора: https://www.kliniken.de/suche/altenheim ... DEСтраница 2.: https://www.kliniken.de/suche/altenheim?seite=2
это продолжается и продолжается - до страницы 40
вот страница с подробностями - то есть страница результатов:
https://www.kliniken.de/altenheim/evang ... 5986P.html
см. мой подход:

Код: Выделить всё

import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

# Basis-URL für die Übersichtseiten
base_url = "https://www.kliniken.de/suche/altenheim?seite={page}&country=DE"
# Liste zur Speicherung der gesammelten Daten
data = []

# Funktion, um die Details einer Einrichtung zu scrapen
def scrape_detail_page(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# Datenfelder initialisieren
name = address = website = email = description = None

# Beispiel: Name der Einrichtung (Header-Bereich der Seite)
name_tag = soup.find('h1', class_='page-title')
if name_tag:
name = name_tag.get_text(strip=True)

# Beispiel: Adresse (entweder spezifische Class suchen oder anhand von Strukturen)
address_tag = soup.find('div', class_='contact-address')
if address_tag:
address = address_tag.get_text(separator=', ', strip=True)

# Website und E-Mail (oft im Kontaktbereich)
contact_links = soup.find_all('a', href=True)
for link in contact_links:
href = link['href']
if 'mailto:' in href:
email = href.replace('mailto:', '').strip()
elif 'http' in href and not 'kliniken.de' in href:
website = href.strip()

# Kurzbeschreibung, falls vorhanden
description_tag = soup.find('div', class_='description')
if description_tag:
description = description_tag.get_text(strip=True)

return {
'Name': name,
'Adresse': address,
'Website': website,
'E-Mail': email,
'Kurzbeschreibung': description
}

# Scraper für die Überblicksseiten
for page in range(1, 41):  # Geht durch alle 40 Seiten
print(f"Scraping Übersichtseite {page}...")
response = requests.get(base_url.format(page=page))
soup = BeautifulSoup(response.text, 'html.parser')

# Finde alle Links zu den Detailseiten
detail_links = soup.find_all('a', class_='result-item-title', href=True)

for link in detail_links:
detail_url = "https://www.kliniken.de" + link['href']
print(f" - Scraping Detailseite: {detail_url}")

# Detailseite scrapen und Daten speichern
detail_data = scrape_detail_page(detail_url)
data.append(detail_data)

# Optional: Kurze Pause, um die Serverlast zu reduzieren
time.sleep(1)

# Daten in ein DataFrame speichern und als CSV exportieren
df = pd.DataFrame(data)
csv_file = 'altenheime_deutschland.csv'
df.to_csv(csv_file, index=False)

print(f"Daten wurden in {csv_file} gespeichert.")
результат:

Код: Выделить всё

Scraping Übersichtseite 1...
Scraping Übersichtseite 2...
Scraping Übersichtseite 3...
Scraping Übersichtseite 4...
Scraping Übersichtseite 5...
Scraping Übersichtseite 6...
Scraping Übersichtseite 7...
Scraping Übersichtseite 8...
Scraping Übersichtseite 9...
Scraping Übersichtseite 10...
Scraping Übersichtseite 11...
Scraping Übersichtseite 12...
Scraping Übersichtseite 13..
Ну, скрипт - на данный момент не извлекает страницы результатов - он только показывает процесс. - но не более того...

Подробнее здесь: https://stackoverflow.com/questions/791 ... y-the-page
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Flutter just_audio внезапно прекращается в фоновом режиме примерно через 10 минут.
    Anonymous » » в форуме Android
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Многопоточная запись TFRecord внезапно прекращается в блокноте Kaggle [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Pandas и очистка HTML-кода bs4
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Chromedriver внезапно замедлился (очистка с помощью Python, Selenium)
    Anonymous » » в форуме Python
    0 Ответы
    62 Просмотры
    Последнее сообщение Anonymous
  • XAMPP: домашняя страница PHP показывает, что страница 404 не найдена, но домашняя страница HTML работает
    Anonymous » » в форуме Php
    0 Ответы
    283 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»