A Step-by-Step Python Selenium Web Scraping Tutorial

Sist oppdatert May 6, 2026
Step-by-step Python Selenium web scraping tutorial title slide with coding and web icons

Nettet er ikke som før. I dag er nesten alle nettstedene du besøker drevet av JavaScript, med innhold som lastes inn dynamisk – tenk uendelig scrolling, pop-ups og dashboards som først avslører hemmelighetene sine etter ett eller to klikk. Faktisk bruker hele 98,7 % av alle nettsteder nå JavaScript, noe som betyr at de gamle skrapeverktøyene som bare leser statisk HTML, går glipp av masse verdifull data. Har du noen gang prøvd å hente produktpriser fra en moderne nettbutikk eller trekke eiendomsannonser fra et interaktivt kart, kjenner du frustrasjonen: dataene du vil ha, finnes rett og slett ikke i kildekoden.

Det er her Selenium-skraping kommer inn. Som en som har brukt år på å bygge automatiseringsverktøy (og, ja, på å skrape mer enn min rettferdige andel nettsteder), kan jeg si det rett ut: Å mestre Selenium er en superkraft for alle som trenger ferske, dynamiske data. I denne praktiske Selenium-tutorialen for webskraping går jeg gjennom de viktigste stegene – fra oppsett til automatisering – og viser hvordan du kan kombinere Selenium med Thunderbit for strukturert data som er klar til eksport. Enten du er forretningsanalytiker, salgsansvarlig eller bare en nysgjerrig Python-bruker, vil du sitte igjen med praktiske ferdigheter og et par latterkuler underveis (for la oss være ærlige: debugging av XPath-selektorer bygger karakter).

Prøv Thunderbit AI Web Scraper

Hva er Selenium, og hvorfor bruke det til webskraping?

selenium-dynamic-vs-static-web-scraping.png La oss begynne med det grunnleggende. Selenium er et åpen kildekode-rammeverk som lar deg styre en ekte nettleser – som Chrome eller Firefox – ved hjelp av kode. Tenk på det som en robot som kan åpne sider, klikke på knapper, fylle ut skjemaer, scrolle og til og med kjøre JavaScript, akkurat som en menneskelig bruker. Dette er viktig fordi de fleste moderne nettsteder ikke viser deg alle dataene med én gang. I stedet lastes innhold dynamisk, ofte etter at du har interagert med siden.

Hva er datascraping, og hvordan gjør du det i 2026 Get Started Free

Hvorfor er dette viktig for skraping? Tradisjonelle verktøy som BeautifulSoup eller Scrapy er flotte for statisk HTML, men de kan ikke «se» noe som lastes inn av JavaScript etter at siden først er lastet. Selenium, derimot, kan samhandle med siden i sanntid, noe som gjør det perfekt for:

  • Å skrape produktlister som bare vises etter at du klikker «Last mer»
  • Å hente priser eller anmeldelser som oppdateres dynamisk
  • Å navigere gjennom innloggingsskjemaer, pop-ups eller uendelig scrolling
  • Å hente data fra dashboards, kart eller andre interaktive elementer

Kort sagt er Selenium verktøyet du bør velge når du trenger å skrape data som først dukker opp etter at siden har lastet ferdig – eller etter en brukerhandling.

Viktige steg for Python Selenium-webskraping

Selenium-skraping kan i praksis brytes ned i tre essensielle steg:

StegHva du gjørHvorfor det er viktig
1. Oppsett av miljøInstaller Selenium, WebDriver og Python-bibliotekerGjør verktøyene klare og unngå oppsettsproblemer
2. Finne elementerFinn dataene du vil ha ved hjelp av ID-er, klasser, XPath osv.Treffer riktig informasjon, selv om den er skjult av JavaScript
3. Hente ut og lagre dataTrekk ut tekst, lenker eller tabeller og lagre til CSV/ExcelGjør rå nettdata om til noe du kan bruke

La oss gå gjennom hvert steg med praktiske eksempler og kode du kan kopiere, tilpasse og skryte av til vennene dine.

Steg 1: Sette opp Python Selenium-miljøet ditt

Først må du installere Selenium og en nettleserdriver (som ChromeDriver for Chrome). Den gode nyheten? Det er enklere enn noen gang.

Installer Selenium

Åpne terminalen og kjør:

pip install selenium

Skaff en WebDriver

Profftips: Med Selenium 4.6+ kan du bruke Selenium Manager til å laste ned drivere automatisk, så du trenger kanskje ikke lenger å styre med PATH-variabler (dokumentasjon).

Ditt første Selenium-skript

Her er en rask «hello world» for Selenium:

from selenium import webdriver

driver = webdriver.Chrome()  # Eller webdriver.Firefox()
driver.get("https://example.com")
print(driver.title)
driver.quit()

Feilsøkingstips:

  • Hvis du får feilen «driver not found», sjekk PATH eller bruk Selenium Manager.
  • Sørg for at nettleser- og driverversjonene dine matcher.
  • Hvis du kjører på en headless-server (uten GUI), se tipsene om headless-modus nedenfor.

Steg 2: Finne webelementer for datauttrekk

Nå kommer den morsomme delen: å fortelle Selenium hvilke data du vil ha. Nettsteder er bygget med elementer – div-er, span-er, tabeller, alt mulig – og Selenium gir deg flere måter å finne dem på.

Vanlige metoder for å finne elementer

  • By.ID: Finn et element med en unik ID
  • By.CLASS_NAME: Finn elementer etter CSS-klasse
  • By.XPATH: Bruk XPath-uttrykk (svært fleksibelt, men kan være skjørt)
  • By.CSS_SELECTOR: Bruk CSS-selektorer (flott for mer komplekse søk)

Slik kan du bruke dem:

from selenium.webdriver.common.by import By

# Finn etter ID
price = driver.find_element(By.ID, "price").text

# Finn etter XPath
title = driver.find_element(By.XPATH, "//h1").text

# Finn alle produktbilder med CSS-selector
images = driver.find_elements(By.CSS_SELECTOR, ".product img")
for img in images:
    print(img.get_attribute("src"))

Profftips: Bruk alltid den enkleste og mest stabile selektoren (ID > klasse > CSS > XPath). Og hvis du skraper en side som laster data etter en forsinkelse, bruk eksplisitte ventinger:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
price_elem = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".price")))

Dette hindrer skriptet ditt i å krasje hvis dataene bruker et øyeblikk på å dukke opp.

Steg 3: Hente ut og lagre data

Når du har funnet elementene, er det på tide å hente ut dataene og lagre dem et nyttig sted.

Hente ut tekst, lenker og tabeller

La oss si at du skraper en produkttabell:

data = []
rows = driver.find_elements(By.XPATH, "//table/tbody/tr")
for row in rows:
    cells = row.find_elements(By.TAG_NAME, "td")
    data.append([cell.text for cell in cells])

Lagre til CSV med Pandas

import pandas as pd

df = pd.DataFrame(data, columns=["Navn", "Pris", "På lager"])
df.to_csv("products.csv", index=False)

Du kan også lagre til Excel (df.to_excel("products.xlsx")) eller til og med sende det videre til Google Sheets via API-et deres.

Fullt eksempel: Skrape produkttitler og priser

from selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd

driver = webdriver.Chrome()
driver.get("https://example.com/products")

data = []
products = driver.find_elements(By.CLASS_NAME, "product-card")
for p in products:
    title = p.find_element(By.CLASS_NAME, "title").text
    price = p.find_element(By.CLASS_NAME, "price").text
    data.append([title, price])

driver.quit()

df = pd.DataFrame(data, columns=["Tittel", "Pris"])
df.to_csv("products.csv", index=False)

Selenium vs. BeautifulSoup og Scrapy: Hva gjør Selenium unikt?

selenium-vs-traditional-scrapers-comparison.png La oss avgjøre debatten: Når bør du bruke Selenium, og når passer noe som BeautifulSoup eller Scrapy bedre? Her er en rask sammenligning:

VerktøyBest forHåndterer JavaScript?Hastighet og ressursbruk
SeleniumDynamiske/interaktive nettstederJaTregere, bruker mer minne
BeautifulSoupEnkel skraping av statisk HTMLNeiSvært raskt, lettvekts
ScrapySkraping av store volumer på statiske nettstederBegrenset*Superrask, asynkron, lite RAM
ThunderbitKodefri skraping for businessJa (AI)Raskt for små/mellomstore jobber

*Scrapy kan håndtere noe dynamisk innhold med plugins, men det er ikke der styrken ligger (ScrapingBee).

Når du bør bruke Selenium:

  • Dataene vises først etter at du klikker, scroller eller logger inn
  • Du må samhandle med pop-ups, uendelig scrolling eller dynamiske dashboards
  • Statiske skrapere strekker ikke til

Når du bør bruke BeautifulSoup/Scrapy:

  • Dataene ligger i den opprinnelige HTML-en
  • Du trenger å skrape tusenvis av sider raskt
  • Du vil bruke minst mulig ressurser

Og hvis du vil slippe all koding, lar Thunderbit deg skrape dynamiske nettsteder med AI – bare klikk «AI foreslå felt» og eksporter til Sheets, Notion eller Airtable. (Mer om det nedenfor.)

Slik skraper du hvilket som helst nettsted med AI Get Started Free

Automatisere webskrapingoppgaver med Selenium og Python

La oss være ærlige: Ingen har lyst til å våkne klokken 02.00 for å kjøre et skrapeskript. Den gode nyheten er at du kan automatisere Selenium-jobbene dine ved hjelp av Pythons planleggingsverktøy eller operativsystemets planlegger (som cron på Linux/Mac eller Oppgaveplanlegging på Windows).

Bruke schedule-biblioteket

import schedule
import time

def job():
    # Koden din for skraping her
    print("Skraper...")

schedule.every().day.at("09:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

Eller med Cron (Linux/Mac)

Legg dette til i crontab-en din for å kjøre hver time:

0 * * * * python /path/to/your_script.py

Tips for automatisering:

  • Kjør Selenium i headless-modus (se nedenfor) for å unngå GUI-pop-ups.
  • Loggfør feil og send deg selv varsler hvis noe går galt.
  • Lukk alltid nettleseren med driver.quit() for å frigjøre ressurser.

Øk effektiviteten: Tips for raskere og mer pålitelig Selenium-skraping

Selenium er kraftig, men kan være tregt og ressurskrevende hvis du ikke er forsiktig. Slik får du opp hastigheten og unngår vanlige problemer:

1. Kjør i headless-modus

Du trenger ikke å se Chrome åpne og lukke seg hundre ganger. Headless-modus kjører nettleseren i bakgrunnen:

from selenium.webdriver.chrome.options import Options

opts = Options()
opts.headless = True
driver = webdriver.Chrome(options=opts)

2. Blokker bilder og annet unødvendig innhold

Hvorfor laste bilder hvis du bare skraper tekst? Blokker dem for å få raskere sideinnlasting:

prefs = {"profile.managed_default_content_settings.images": 2}
opts.add_experimental_option("prefs", prefs)

3. Bruk effektive selektorer

  • Foretrekk ID-er eller enkle CSS-selektorer fremfor komplekse XPath-er.
  • Unngå time.sleep() – bruk eksplisitte ventinger (WebDriverWait) i stedet.

4. Tilfeldiggjør forsinkelser

Legg inn tilfeldige pauser for å etterligne menneskelig nettlesing og unngå å bli blokkert:

import random, time

time.sleep(random.uniform(1, 3))

5. Roter brukeragenter og IP-er (hvis nødvendig)

Hvis du skraper mye, bør du rotere user agent-strengen og vurdere å bruke proxyer for å unngå enkle anti-bot-mekanismer.

6. Håndter sesjoner og feil

  • Bruk try/except-blokker for å håndtere manglende elementer på en ryddig måte.
  • Loggfør feil og ta skjermbilder for feilsøking.

For flere optimaliseringstips, se BrowserStacks guide.

Avansert: Kombinere Selenium med Thunderbit for strukturert dataeksport

Her blir det virkelig interessant – spesielt hvis du vil spare tid på datarensing og eksport.

Etter at du har skrapet rådata med Selenium, kan du bruke Thunderbit til å:

  • Oppdage felter automatisk: Thunderbits AI kan lese de skrapede sidene eller CSV-filene dine og foreslå kolonnenavn («AI foreslå felt»).
  • Skraping av undersider: Hvis du har en liste med URL-er (for eksempel produktsider), kan Thunderbit besøke hver enkelt og berike tabellen din med flere detaljer – uten ekstra kode.
  • Berikelse av data: Oversett, kategoriser eller analyser data i sanntid.
  • Eksporter hvor som helst: Eksporter med ett klikk til Google Sheets, Airtable, Notion, CSV eller Excel.

Eksempel på arbeidsflyt:

  1. Bruk Selenium til å skrape en liste med produkt-URL-er og titler.
  2. Eksporter dataene til CSV.
  3. Åpne Thunderbit, importer CSV-en og la AI-en foreslå felt.
  4. Bruk Thunderbits undersideskraping til å hente flere detaljer (som bilder eller spesifikasjoner) fra hver produkt-URL.
  5. Eksporter det endelige, strukturerte datasettet til Sheets eller Notion.

Denne kombinasjonen sparer deg for timevis med manuell opprydding og lar deg fokusere på analyse, ikke på å rydde opp i rotete data. For mer om denne arbeidsflyten, se Thunderbits Selenium-guide.

Eksporter Selenium-data med Thunderbit AI

Beste praksis og feilsøking for Selenium-webskraping

Webskraping er litt som fiske: Noen ganger får du en stor en, andre ganger sitter du fast i taren. Slik holder du skriptene dine stabile – og etiske:

Beste praksis

  • Respekter robots.txt og nettstedets vilkår: Sjekk alltid om skraping er tillatt.
  • Begrens forespørslene dine: Ikke overbelast serverne – legg inn forsinkelser og se etter HTTP 429-feil.
  • Bruk API-er når de finnes: Hvis dataene er offentlig tilgjengelige via API, bruk det – det er tryggere og mer pålitelig.
  • Skrap bare offentlige data: Unngå personlige eller sensitive opplysninger, og vær oppmerksom på personvernregler.
  • Håndter pop-ups og CAPTCHA-er: Bruk Selenium til å lukke pop-ups, men vær forsiktig med CAPTCHA-er – de er vanskelige å automatisere.
  • Tilfeldiggjør user agents og forsinkelser: Hjelper med å unngå oppdagelse og blokkering.

Vanlige feil og løsninger

FeilHva det betyrSlik fikser du det
NoSuchElementExceptionFinner ikke elementetSjekk selektoren på nytt; bruk ventinger
TidsavbruddsfeilSiden eller elementet tok for lang tidØk ventetiden; sjekk nettverksfarten
Driver-/nettlesermismatchSelenium får ikke startet nettleserenOppdater driver- og nettleserversjonene dine
Økter krasjerNettleseren ble uventet lukketBruk headless-modus; håndter ressurser

For flere feilsøkingstips, se Thunderbits Selenium-tutorial.

Konklusjon og viktigste læringspunkter

Dynamisk webskraping er ikke lenger bare for hardcore-utviklere. Med Python og Selenium kan du automatisere hvilken som helst nettleser, samhandle med de mest kronglete JavaScript-tunge nettstedene og hente ut dataene virksomheten din trenger – enten det er for salg, research eller bare for å stille nysgjerrigheten din. Husk:

  • Selenium er førstevalget for dynamiske, interaktive nettsteder.
  • De tre viktigste stegene: oppsett, finn, hent ut og lagre.
  • Automatiser skriptene dine for regelmessige dataoppdateringer.
  • Optimaliser for hastighet og pålitelighet med headless-modus, smarte ventinger og effektive selektorer.
  • Kombiner Selenium med Thunderbit for enkel strukturering og eksport av data – spesielt hvis du vil slippe regnearkhodepinen.

Klar til å prøve selv? Start med kodeeksemplene over, og når du er klar til å ta skrapingen til neste nivå, gi Thunderbit en sjanse for umiddelbar, AI-drevet datarensing og eksport. Og hvis du vil ha mer, ta en titt på Thunderbit Blog for dypdykk, guider og det siste innen webautomatisering.

God skraping – og måtte selektorene dine alltid finne det du leter etter.

Prøv Thunderbit AI Web Scraper gratis Get Started Free

Vanlige spørsmål

1. Hvorfor bør jeg bruke Selenium til webskraping i stedet for BeautifulSoup eller Scrapy?
Selenium er ideelt for å skrape dynamiske nettsteder der innhold lastes etter brukerhandlinger eller JavaScript-kjøring. BeautifulSoup og Scrapy er raskere for statisk HTML, men kan ikke samhandle med dynamiske elementer eller simulere klikk og scrolling.

2. Hvordan får jeg Selenium-skraperen min til å kjøre raskere?
Bruk headless-modus, blokker bilder og unødvendige ressurser, bruk effektive selektorer og legg inn tilfeldige forsinkelser for å etterligne menneskelig nettlesing. Se BrowserStacks guide for flere tips.

3. Kan jeg planlegge Selenium-skraping til å kjøre automatisk?
Ja! Bruk Pythons schedule-bibliotek eller operativsystemets planlegger (cron eller Oppgaveplanlegging) for å kjøre skript med faste intervaller. Automatisering hjelper deg å holde dataene oppdatert.

4. Hva er den beste måten å eksportere data skrapet med Selenium på?
Bruk Pandas til å lagre data til CSV eller Excel. For mer avanserte eksporter (Google Sheets, Notion, Airtable) kan du importere dataene dine i Thunderbit og bruke eksportfunksjonene med ett klikk.

5. Hvordan håndterer jeg pop-ups og CAPTCHA-er i Selenium?
Du kan lukke pop-ups ved å finne og klikke på lukkeknappene deres. CAPTCHA-er er mye vanskeligere – hvis du møter dem, vurder en manuell omvei eller en tjeneste for CAPTCHA-løsning, og respekter alltid nettstedets bruksvilkår.

Vil du se flere skrapeguider, tips om AI-automatisering eller få siste nytt om verktøy for forretningsdata? Abonner på Thunderbit Blog eller sjekk ut YouTube-kanalen vår for praktiske demonstrasjoner.

Les mer

Shuai Guan
Shuai Guan
CEO i Thunderbit | Ekspert på AI-drevet dataautomatisering Shuai Guan er CEO i Thunderbit og utdannet ingeniør fra University of Michigan. Med nærmere ti års erfaring innen teknologi og SaaS-arkitektur, spesialiserer han seg på å gjøre avanserte AI-modeller om til praktiske verktøy for datauttrekk uten koding. På denne bloggen deler han ærlige, velprøvde innsikter om webskraping og automatiseringsstrategier som hjelper deg å bygge smartere, datadrevne arbeidsflyter. Når han ikke optimaliserer dataflyt, bruker han det samme skarpe blikket for detaljer i sin lidenskap for fotografi.
Topics
Scraping with seleniumSelenium web scraping tutorialPython selenium scrape website
Innholdsfortegnelse

Hent en nettside bare ved å spørre

Si hva du trenger på vanlig norsk. Eller enda bedre, si ingenting i det hele tatt.

Prøv Thunderbit gratis
Hent data med AI
Overfør enkelt data til Google Sheets, Airtable eller Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week