A Step-by-Step Python Selenium Web Scraping Tutorial

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

Webben är inte längre vad den en gång var. I dag drivs nästan varje sajt du besöker av JavaScript och laddar innehåll dynamiskt – tänk oändlig scrollning, pop-ups och dashboards som bara avslöjar sina hemligheter efter ett eller två klick. Faktum är att hela 98,7 % av alla webbplatser nu använder JavaScript, vilket betyder att gamla scrapingverktyg som bara läser statisk HTML missar mängder av värdefull data. Om du någon gång har försökt skrapa produktpriser från en modern e-handelswebbplats eller hämta bostadsannonser från en interaktiv karta, känner du säkert igen frustrationen: datan du vill åt finns helt enkelt inte i källkoden.

Det är här scraping med Selenium kommer in. Som någon som har ägnat år åt att bygga automationsverktyg (och ja, skrapat mer än min rättvisa andel webbplatser) kan jag säga att att bemästra Selenium är en superkraft för alla som behöver uppdaterad, dynamisk data. I den här praktiska guiden till web scraping med Selenium går jag igenom de viktigaste stegen – från installation till automation – och visar hur du kan kombinera Selenium med Thunderbit för strukturerad data som är redo att exporteras. Oavsett om du är affärsanalytiker, säljare eller bara en nyfiken Python-användare kommer du härifrån med praktiska färdigheter och några skratt på vägen (för ärligt talat, att felsöka XPath-selectors bygger karaktär).

Testa Thunderbit AI Web Scraper

Vad är Selenium och varför använda det för web scraping?

selenium-dynamic-vs-static-web-scraping.png Vi börjar med grunderna. Selenium är ett ramverk med öppen källkod som låter dig styra en riktig webbläsare – som Chrome eller Firefox – med kod. Se det som en robot som kan öppna sidor, klicka på knappar, fylla i formulär, scrolla och till och med köra JavaScript, precis som en mänsklig användare. Det här är viktigt eftersom många moderna webbplatser inte visar all data direkt. I stället laddas innehållet dynamiskt, ofta först efter att du har interagerat med sidan.

Vad är data scraping och hur gör man det 2026 Get Started Free

Varför spelar det här roll vid scraping? Traditionella verktyg som BeautifulSoup eller Scrapy är utmärkta för statisk HTML, men de kan inte “se” något som laddas av JavaScript efter att sidan först öppnats. Selenium däremot kan interagera med sidan i realtid, vilket gör det perfekt för:

  • Att skrapa produktlistor som bara visas efter att man klickat på ”Ladda fler”
  • Att hämta priser eller recensioner som uppdateras dynamiskt
  • Att navigera genom inloggningsformulär, pop-ups eller oändlig scrollning
  • Att extrahera data från dashboards, kartor eller andra interaktiva element

Kort sagt är Selenium ditt förstahandsval när du behöver skrapa data som bara visas efter att sidan har laddats klart – eller efter en användaråtgärd.

Viktiga steg för web scraping med Python och Selenium

Att skrapa med Selenium kokar ner till tre avgörande steg:

StegVad du görVarför det spelar roll
1. MiljöinställningInstallera Selenium, WebDriver och Python-bibliotekFå verktygen på plats och slipp installationsstrul
2. Hitta elementLeta upp datan du vill åt med ID:n, klasser, XPath osv.Rikta in dig på rätt information, även om den döljs av JavaScript
3. Extrahera och spara dataHämta text, länkar eller tabeller och spara till CSV/ExcelGör rå webdata till något du faktiskt kan använda

Nu går vi igenom varje steg med praktiska exempel och kod som du kan kopiera, justera och skryta lite om för vännerna.

Steg 1: Ställ in din Python-miljö för Selenium

Först och främst behöver du installera Selenium och en webbläsardrivrutin (som ChromeDriver för Chrome). Goda nyheter? Det är enklare än någonsin.

Installera Selenium

Öppna terminalen och kör:

pip install selenium

Hämta en WebDriver

Proffstips: Med Selenium 4.6+ kan du använda Selenium Manager för att ladda ner drivrutiner automatiskt, så du kanske inte ens behöver hålla på med PATH-variabler längre (docs).

Ditt första Selenium-skript

Här är en snabb ”hello world” för Selenium:

from selenium import webdriver

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

Felsökningstips:

  • Om du får felet ”driver not found”, kontrollera din PATH eller använd Selenium Manager.
  • Se till att webbläsar- och drivrutinsversionerna matchar.
  • Om du kör på en headless-server (utan GUI), se tipsen om headless-läge längre ner.

Steg 2: Hitta webbelement för datautvinning

Nu till den roliga delen: att tala om för Selenium vilken data du vill ha. Webbplatser byggs av element – divar, spans, tabeller, you name it – och Selenium ger dig flera sätt att hitta dem.

Vanliga sätt att lokalisera element

  • By.ID: Hitta ett element med ett unikt ID
  • By.CLASS_NAME: Hitta element via CSS-klass
  • By.XPATH: Använd XPath-uttryck (väldigt flexibelt, men kan vara skört)
  • By.CSS_SELECTOR: Använd CSS-selektorer (bra för mer komplexa frågor)

Så här kan du använda dem:

from selenium.webdriver.common.by import By

# Hitta via ID
price = driver.find_element(By.ID, "price").text

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

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

Proffstips: Använd alltid den enklaste och mest stabila lokaliseraren (ID > klass > CSS > XPath). Och om du skrapar en sida där data laddas efter en fördröjning, använd explicita waits:

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")))

Det här hindrar skriptet från att krascha om datan tar någon sekund på sig att visas.

Steg 3: Extrahera och spara data

När du väl har hittat dina element är det dags att hämta datan och spara den någonstans användbart.

Extrahera text, länkar och tabeller

Säg att du skrapar en tabell med produkter:

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])

Spara till CSV med Pandas

import pandas as pd

df = pd.DataFrame(data, columns=["Name", "Price", "Stock"])
df.to_csv("products.csv", index=False)

Du kan också spara till Excel (df.to_excel("products.xlsx")) eller till och med skicka vidare till Google Sheets via deras API.

Fullständigt exempel: skrapa produktnamn och 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=["Title", "Price"])
df.to_csv("products.csv", index=False)

Selenium vs. BeautifulSoup och Scrapy: Vad gör Selenium unikt?

selenium-vs-traditional-scrapers-comparison.png Låt oss reda ut debatten: när ska du använda Selenium, och när passar något som BeautifulSoup eller Scrapy bättre? Här är en snabb jämförelse:

VerktygBäst förHanterar JavaScript?Hastighet och resursanvändning
SeleniumDynamiska/interaktiva webbplatserJaLångsammare, använder mer minne
BeautifulSoupEnkel scraping av statisk HTMLNejVäldigt snabbt, lättviktigt
ScrapyHögvolyms-crawling av statiska sajterBegränsat*Super snabbt, asynkront, låg RAM-användning
ThunderbitKodfri scraping för företagJa (AI)Snabbt för små/medelstora jobb

*Scrapy kan hantera en del dynamiskt innehåll med plugins, men det är inte dess starkaste sida (ScrapingBee).

När du ska använda Selenium:

  • Datan visas först efter klick, scrollning eller inloggning
  • Du behöver interagera med pop-ups, oändlig scrollning eller dynamiska dashboards
  • Statiska scrapers räcker helt enkelt inte till

När du ska använda BeautifulSoup/Scrapy:

  • Datan finns i den initiala HTML-koden
  • Du behöver skrapa tusentals sidor snabbt
  • Du vill använda så lite resurser som möjligt

Och om du vill hoppa över kodandet helt låter Thunderbit dig skrapa dynamiska sajter med AI – klicka bara på ”AI Suggest Fields” och exportera till Sheets, Notion eller Airtable. (Mer om det längre ner.)

Hur du skrapar vilken webbplats som helst med AI Get Started Free

Automatisera web scraping-uppgifter med Selenium och Python

Låt oss vara ärliga: ingen vill vakna klockan 02.00 för att köra ett scraping-skript. Goda nyheter är att du kan automatisera dina Selenium-jobb med Pythons schemaläggningsverktyg eller operativsystemets egen schemaläggare (som cron på Linux/Mac eller Aktivitetsschemaläggaren i Windows).

Använd biblioteket schedule

import schedule
import time

def job():
    # Din scraping-kod här
    print("Scrapar...")

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

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

Eller med Cron (Linux/Mac)

Lägg till detta i din crontab för att köra varje timme:

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

Tips för automation:

  • Kör Selenium i headless-läge (se nedan) för att undvika GUI-pop-ups.
  • Logga fel och skicka dig själv en varning om något går fel.
  • Stäng alltid webbläsaren med driver.quit() för att frigöra resurser.

Öka effektiviteten: tips för snabbare och mer pålitlig scraping med Selenium

Selenium är kraftfullt, men kan vara långsamt och resurskrävande om du inte är försiktig. Så här snabbar du upp det och undviker vanliga problem:

1. Kör i headless-läge

Du behöver inte se Chrome öppnas och stängas hundra gånger. Headless-läge kör webbläsaren i bakgrunden:

from selenium.webdriver.chrome.options import Options

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

2. Blockera bilder och annat onödigt innehåll

Varför ladda bilder om du bara skrapar text? Blockera dem för att snabba upp sidladdningen:

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

3. Använd effektiva lokaliserare

  • Föredra ID:n eller enkla CSS-selektorer framför komplexa XPath-uttryck.
  • Undvik time.sleep() – använd explicita waits (WebDriverWait) i stället.

4. Slumpa fördröjningar

Lägg in slumpmässiga pauser för att efterlikna mänskligt surfande och undvika blockering:

import random, time

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

5. Rotera user agents och IP-adresser (om det behövs)

Om du skrapar mycket, rotera din user agent-sträng och överväg att använda proxyservrar för att undvika enkla anti-bot-skydd.

6. Hantera sessioner och fel

  • Använd try/except-block för att hantera saknade element på ett smidigt sätt.
  • Logga fel och ta skärmdumpar för felsökning.

För fler optimeringstips, kolla in BrowserStacks guide.

Avancerat: kombinera Selenium med Thunderbit för strukturerad dataexport

Nu börjar det bli riktigt intressant – särskilt om du vill spara tid på datarensning och export.

När du har skrapat rådata med Selenium kan du använda Thunderbit för att:

  • Automatiskt identifiera fält: Thunderbits AI kan läsa dina skrapade sidor eller CSV-filer och föreslå kolumnnamn (”AI Suggest Fields”).
  • Skrapa undersidor: Om du har en lista med URL:er (som produktsidor) kan Thunderbit besöka varje sida och berika tabellen med fler detaljer – ingen extra kod krävs.
  • Berika data: Översätt, kategorisera eller analysera data direkt.
  • Exportera var som helst: Exportera med ett klick till Google Sheets, Airtable, Notion, CSV eller Excel.

Exempel på arbetsflöde:

  1. Använd Selenium för att skrapa en lista med produkt-URL:er och titlar.
  2. Exportera datan till CSV.
  3. Öppna Thunderbit, importera din CSV och låt AI:n föreslå fält.
  4. Använd Thunderbits undersidescraping för att hämta mer information (som bilder eller specifikationer) från varje produkt-URL.
  5. Exportera din slutgiltiga, strukturerade dataset till Sheets eller Notion.

Den här kombinationen sparar timmar av manuell rensning och låter dig fokusera på analys, inte på att brottas med stökig data. För mer om det här arbetsflödet, kolla in Thunderbits Selenium-guide.

Exportera Selenium-data med Thunderbit AI

Bästa praxis och felsökning för web scraping med Selenium

Web scraping är lite som fiske: ibland får du en stor fisk, ibland trasslar du in dig i ogräs. Så här håller du dina skript pålitliga – och etiska:

Bästa praxis

  • Respektera robots.txt och sajtens villkor: Kontrollera alltid om scraping är tillåtet.
  • Stryp dina förfrågningar: Överbelasta inte servrar – lägg in fördröjningar och håll utkik efter HTTP 429-fel.
  • Använd API:er när de finns: Om datan är publik via API, använd det – det är säkrare och mer tillförlitligt.
  • Skrapa bara offentlig data: Undvik personuppgifter eller känslig information, och tänk på integritetslagstiftning.
  • Hantera pop-ups och CAPTCHA: Använd Selenium för att stänga pop-ups, men var försiktig med CAPTCHA – de är svåra att automatisera.
  • Slumpa user agents och fördröjningar: Hjälper dig att undvika upptäckt och blockering.

Vanliga fel och lösningar

FelVad det betyderSå löser du det
NoSuchElementExceptionKan inte hitta elementetKontrollera din lokaliserare igen; använd waits
Timeout-felSidan eller elementet tog för lång tidÖka väntetiden; kontrollera nätverkshastigheten
Mismatch mellan drivrutin och webbläsareSelenium kan inte starta webbläsarenUppdatera versionerna av drivrutin och webbläsare
SessionskrascherWebbläsaren stängdes oväntatAnvänd headless-läge; hantera resurser

För fler felsökningstips, se Thunderbits Selenium-guide.

Slutsats och viktiga lärdomar

Dynamisk web scraping är inte längre bara för hårdkodande utvecklare. Med Python Selenium kan du automatisera vilken webbläsare som helst, interagera med de mest svårflirtade JavaScript-tunga sajterna och hämta den data ditt företag behöver – oavsett om det gäller försäljning, research eller bara din egen nyfikenhet. Kom ihåg:

  • Selenium är förstahandsvalet för dynamiska och interaktiva webbplatser.
  • De tre viktigaste stegen: installation, hitta element, extrahera och spara.
  • Automatisera dina skript för regelbundna datauppdateringar.
  • Optimera för hastighet och stabilitet med headless-läge, smarta waits och effektiva lokaliserare.
  • Kombinera Selenium med Thunderbit för enkel strukturering och export av data – särskilt om du vill slippa kalkylbladsstrul.

Redo att testa själv? Börja med kodexemplen ovan, och när du är redo att ta din scraping till nästa nivå, prova Thunderbit för omedelbar AI-driven datarensning och export. Och om du vill ha mer, kolla in Thunderbit Blog för fördjupningar, guider och det senaste inom webautomation.

Lycka till med scrappingen – må dina selectors alltid hitta det du letar efter.

Testa Thunderbit AI Web Scraper gratis Get Started Free

Vanliga frågor

1. Varför ska jag använda Selenium för web scraping i stället för BeautifulSoup eller Scrapy?
Selenium är idealiskt för att skrapa dynamiska webbplatser där innehåll laddas efter användaråtgärder eller JavaScript-körning. BeautifulSoup och Scrapy är snabbare för statisk HTML men kan inte interagera med dynamiska element eller simulera klick och scrollning.

2. Hur gör jag min Selenium-scraper snabbare?
Använd headless-läge, blockera bilder och onödiga resurser, använd effektiva lokaliserare och lägg in slumpmässiga fördröjningar för att efterlikna mänskligt surfande. Se BrowserStacks guide för fler tips.

3. Kan jag schemalägga Selenium-uppgifter så att de körs automatiskt?
Ja! Använd Pythons bibliotek schedule eller operativsystemets schemaläggare (cron eller Aktivitetsschemaläggaren) för att köra skript med bestämda intervall. Automatisering hjälper dig att hålla datan uppdaterad.

4. Vad är det bästa sättet att exportera data som skrapats med Selenium?
Använd Pandas för att spara data till CSV eller Excel. För mer avancerad export (Google Sheets, Notion, Airtable), importera datan i Thunderbit och använd exportfunktionen med ett klick.

5. Hur hanterar jag pop-ups och CAPTCHA i Selenium?
Du kan stänga pop-ups genom att hitta och klicka på deras stäng-knappar. CAPTCHA är mycket svårare – om du stöter på dem, överväg en manuell lösning eller en tjänst för CAPTCHA-lösning, och respektera alltid sajtens användarvillkor.

Vill du se fler scrapingguider, tips om AI-automation eller få det senaste om verktyg för företagsdata? Prenumerera på Thunderbit Blog eller kolla in vår YouTube-kanal för praktiska demonstrationer.

Läs mer

Shuai Guan
Shuai Guan
VD på Thunderbit | Expert på AI-driven dataautomatisering Shuai Guan är VD för Thunderbit och alumn från University of Michigan Engineering. Med nästan tio års erfarenhet inom teknik och SaaS-arkitektur är han specialiserad på att omvandla avancerade AI-modeller till praktiska, kodfria verktyg för datautvinning. På den här bloggen delar han raka, beprövade insikter om webbskrapning och automatiseringsstrategier som hjälper dig att bygga smartare, datadrivna arbetsflöden. När han inte optimerar dataflöden ägnar han samma detaljblick åt sin passion för fotografi.
Topics
Scraping with seleniumSelenium web scraping tutorialPython selenium scrape website
Innehåll

Samla in en webbsida genom att bara fråga

Säg vad du behöver på enkel engelska. Eller ännu bättre, säg ingenting alls.

Prova Thunderbit gratis
Extrahera data med AI
Överför enkelt data till Google Sheets, Airtable eller Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week