mirror of
https://github.com/Alvin-Zilverstand/ict-algemeen-opdrachten.git
synced 2026-03-06 11:06:59 +01:00
Refactor web scraping script: streamline URL validation and improve error handling
This commit is contained in:
@@ -3,47 +3,36 @@ import requests
|
|||||||
import time
|
import time
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
# Vraag de gebruiker om de URL van de nieuwswebsite
|
|
||||||
url = input("Voer de URL van de nieuwswebsite in: ")
|
url = input("Voer de URL van de nieuwswebsite in: ")
|
||||||
|
|
||||||
# Controleer of de URL begint met 'www.' of 'ww2.', zo niet, voeg 'www.' toe
|
|
||||||
if not (url.startswith('www.') or url.startswith('ww2.')):
|
if not (url.startswith('www.') or url.startswith('ww2.')):
|
||||||
url = 'www.' + url
|
url = 'www.' + url
|
||||||
|
|
||||||
# Controleer of de URL begint met 'https://', zo niet, voeg het toe
|
|
||||||
if not url.startswith('https://'):
|
if not url.startswith('https://'):
|
||||||
url = 'https://' + url
|
url = 'https://' + url
|
||||||
|
|
||||||
# Haal de inhoud van de webpagina op
|
|
||||||
try:
|
try:
|
||||||
response = requests.get(url)
|
response = requests.get(url)
|
||||||
response.raise_for_status() # Raise an HTTPError for bad responses
|
response.raise_for_status()
|
||||||
webpage = response.content
|
webpage = response.content
|
||||||
except requests.exceptions.RequestException as e:
|
except requests.exceptions.RequestException as e:
|
||||||
print(f"Fout bij het ophalen van de webpagina: {e}")
|
print(f"Fout bij het ophalen van de webpagina: {e}")
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
# Parse de webpagina met BeautifulSoup
|
|
||||||
soup = BeautifulSoup(webpage, 'html.parser')
|
soup = BeautifulSoup(webpage, 'html.parser')
|
||||||
|
|
||||||
# Zoek alle titels van nieuwsartikelen (pas de selector aan op basis van de HTML-structuur van de website)
|
titles = soup.find_all('h2')
|
||||||
titles = soup.find_all('h2') # Pas deze selector aan indien nodig
|
|
||||||
|
|
||||||
# Bepaal het pad van het huidige script
|
|
||||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
# Bepaal het pad van het bestand titels.txt in dezelfde directory
|
|
||||||
file_path = os.path.join(script_dir, 'titels.txt')
|
file_path = os.path.join(script_dir, 'titels.txt')
|
||||||
|
|
||||||
# Controleer of er titels zijn gevonden
|
|
||||||
if not titles:
|
if not titles:
|
||||||
print("Geen titels gevonden. Controleer de HTML-structuur van de website en pas de selector aan.")
|
print("Geen titels gevonden. Controleer de HTML-structuur van de website en pas de selector aan.")
|
||||||
else:
|
else:
|
||||||
# Open het bestand titels.txt in append-modus
|
|
||||||
with open(file_path, 'a', encoding='utf-8') as file:
|
with open(file_path, 'a', encoding='utf-8') as file:
|
||||||
# Schrijf de titels van de nieuwsartikelen naar het bestand
|
|
||||||
for title in titles:
|
for title in titles:
|
||||||
file.write(title.get_text(separator=' ') + '\n')
|
file.write(title.get_text(separator=' ') + '\n')
|
||||||
|
|
||||||
print(f"De titels zijn toegevoegd aan {file_path}")
|
print(f"De titels zijn toegevoegd aan {file_path}")
|
||||||
|
|
||||||
time.sleep(2) # Wacht 2 seconden voordat het script wordt afgesloten
|
time.sleep(2)
|
||||||
|
|||||||
Reference in New Issue
Block a user