slogan3

Ontwikkel een Python-script voor web scraping en gegevensverwerking

description

Met deze prompt kun je efficiënt webdata verzamelen en verwerken met Python, leer je het gebruik van krachtige scraping libraries en krijg je inzicht in het structureren van ongestructureerde data. Dit bespaart tijd en verhoogt de nauwkeurigheid van data verzameling voor je projecten.

prompt

Help me een Python-script te schrijven dat web scraping uitvoert op de website: <voer de URL van de website in> om specifieke gegevens te extraheren zoals <besch ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Python-script dat web scraping uitvoert op de website https://www.example.com/products. In dit voorbeeld gebruik ik de libraries `requests` en `BeautifulSoup` om de gegevens te verzamelen, te verwerken en te structureren. Voorbeeldscript: ```python import requests from bs4 import BeautifulSoup # URL van de pagina die we willen scrapen url = 'https://www.example.com/products' # Stuur een GET-verzoek naar de webpagina response = requests.get(url) # Controleer of het verzoek geslaagd is if response.status_code == 200: # Parse de HTML-inhoud met BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') # Zoek alle product-elementen (pas de selector aan op basis van de daadwerkelijke HTML-structuur) producten = soup.find_all('div', class_='product') # voorbeeld: elk product in een div met class 'product' # Lijst om de verzamelde data op te slaan gegevens = [] for product in producten: # Extractie van de productnaam naam_tag = product.find('h2', class_='productnaam') # voorbeeld: h2 met class 'productnaam' naam = naam_tag.text.strip() if naam_tag else 'N/A' # Extractie van de prijs prijs_tag = product.find('span', class_='prijs') # voorbeeld: span met class 'prijs' prijs = prijs_tag.text.strip() if prijs_tag else 'N/A' # Extractie van de voorraadstatus voorraad_tag = product.find('p', class_='voorraad') # voorbeeld: p met class 'voorraad' voorraad = voorraad_tag.text.strip() if voorraad_tag else 'N/A' # Voeg de gegevens toe aan de lijst gegevens.append({ 'naam': naam, 'prijs': prijs, 'voorraad': voorraad }) # Print of verwerk de gestructureerde data for item in gegevens: print(item) else: print(f'Fout bij het ophalen van de pagina: Status code {response.status_code}') ``` ### Uitleg over gebruikte libraries: - **requests**: Hiermee kun je eenvoudig HTTP-verzoeken doen om webpagina's op te halen. - **BeautifulSoup**: Hiermee parse je de HTML-inhoud en kun je gemakkelijk elementen zoeken, extraheren en structureren. ### Tips: - Pas de selectors (`find`, `find_all`) aan op basis van de daadwerkelijke HTML-structuur van de website. - Voor complexere websites of dynamische inhoud kan Scrapy of Selenium nodig zijn. Let op: Zorg dat je de gebruiksvoorwaarden van de website respecteert en controleer of web scraping toegestaan is.
provider: deepseek
model: deepseek-chat
Ik help je graag een Python-script te schrijven voor web scraping. Hier is een complete uitleg en voorbeeldcode: ## Vereiste libraries installeren ```bash pip install requests beautifulsoup4 pandas ``` ## Basis script met BeautifulSoup ```python import requests from bs4 import BeautifulSoup import pandas as pd def scrape_example_products(): # URL van de website url = "https://www.example.com/products" # HTTP-request versturen headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } try: response = requests.get(url, headers=headers) response.raise_for_status() # Controleer op HTTP-fouten # BeautifulSoup object aanmaken soup = BeautifulSoup(response.content, 'html.parser') # Lijst voor productgegevens producten = [] # Zoek productelementen (pas selectors aan op basis van de werkelijke website) # Dit zijn voorbeelden - je moet de juiste CSS-selectors vinden product_elementen = soup.find_all('div', class_='product-item') for product in product_elementen: try: # Productnaam extraheren naam = product.find('h2', class_='product-name').text.strip() # Prijs extraheren prijs = product.find('span', class_='price').text.strip() # Voorraadstatus voorraad = product.find('span', class_='stock-status').text.strip() # Toevoegen aan lijst producten.append({ 'naam': naam, 'prijs': prijs, 'voorraad': voorraad }) except AttributeError as e: print(f"Fout bij verwerken product: {e}") continue # Data structureren in DataFrame df = pd.DataFrame(producten) # Opslaan naar CSV df.to_csv('producten.csv', index=False, encoding='utf-8') print(f"Successvol {len(producten)} producten geschraapt!") return df except requests.RequestException as e: print(f"Fout bij HTTP-request: {e}") return None # Script uitvoeren if __name__ == "__main__": scrape_example_products() ``` ## Alternatief met Scrapy (geavanceerder) **Stap 1: Scrapy project aanmaken** ```bash pip install scrapy scrapy startproject product_scraper cd product_scraper ``` **Stap 2: Spider maken (spiders/product_spider.py)** ```python import scrapy import json class ProductSpider(scrapy.Spider): name = 'example_products' start_urls = ['https://www.example.com/products'] custom_settings = { 'FEEDS': { 'producten.json': {'format': 'json', 'encoding': 'utf8'} } } def parse(self, response): # Producten vinden en parsen products = response.css('div.product-item') for product in products: yield { 'naam': product.css('h2.product-name::text').get().strip(), 'prijs': product.css('span.price::text').get().strip(), 'voorraad': product.css('span.stock-status::text').get().strip() } # Volgende pagina (indien paginatie) next_page = response.css('a.next-page::attr(href)').get() if next_page: yield response.follow(next_page, self.parse) ``` ## Belangrijke overwegingen: 1. **Selectors aanpassen**: Je moet de CSS-selectors analyseren met browser developer tools 2. **Robots.txt respecteren**: Controleer `/robots.txt` van de website 3. **Rate limiting**: Voeg vertragingen toe om servers niet te overbelasten 4. **Headers**: Gebruik realistische User-Agent headers 5. **Foutafhandeling**: Voeg try-except blokken toe voor robuustheid ## Tips voor selector-analyse: - Gebruik browser developer tools (F12) - Rechtsklik → Inspect element op de gewenste data - Kopieer de CSS-selector of XPath **Let op**: Vervang de voorbeeld-selectors (`'div.product-item'`, etc.) met de werkelijke selectors van de specifieke website die je wilt scrapen. Elke website heeft een unieke HTML-structuur.