Webskrabning med selen: Den komplette guide

Webskrabning med selen: Den komplette guide

Kildeknude: 2538197

Ønsker du at udtrække data fra en webside?

Gå over til Nanonets website skraber, Tilføj URL'en og klik på "Skrad", og download websideteksten som en fil med det samme. Prøv det gratis nu.

Nanonets' hjemmesideskraber


Hvad er Selen Web Scraping?

Webskrabning er processen med at udtrække data fra websteder. Det er en kraftfuld teknik, der revolutionerer dataindsamling og analyse. Med store onlinedata er webskrabning blevet et vigtigt værktøj for virksomheder og enkeltpersoner.

Selenium er et open source-webudviklingsværktøj, der bruges til at automatisere web-browsing-funktioner. Det blev udviklet i 2004 og bruges hovedsageligt til automatisk at teste hjemmesider og apps på tværs af forskellige browsere, men det er nu blevet et populært værktøj til web-skrabning. Selen kan bruges med flere programmeringssprog, herunder Python, Java og C#. Det giver robuste API'er til interaktion med websider, herunder navigering, klik, skrivning og rulning.

Selen-webskrabning refererer til at bruge Selenium-browserautomatiseringsværktøjet med Python til at udtrække data fra websteder. Selenium giver udviklere mulighed for programmæssigt at styre en webbrowser programmatisk, hvilket betyder, at de kan interagere med websteder, som om de var menneskelige brugere.


Hvorfor bruge Selenium og Python til web-skrabning?

Python er et populært programmeringssprog til web-skrabning, fordi det har mange biblioteker og rammer, der gør det nemt at udtrække data fra websteder.

Brug af Python og Selen til webskrabning giver flere fordele i forhold til andre webskrabningsteknikker:

  • Dynamiske hjemmesider: Dynamiske websider oprettes ved hjælp af JavaScript eller andre scriptsprog. Disse sider indeholder ofte synlige elementer, når siden er fuldt indlæst, eller når brugeren interagerer med dem. Selen kan interagere med disse elementer, hvilket gør det til et kraftfuldt værktøj til at skrabe data fra dynamiske websider.
  • Brugerinteraktioner: Selenium kan simulere brugerinteraktioner som klik, formularindsendelser og rulning. Dette giver dig mulighed for at skrabe websteder, der kræver brugerinput, såsom login-formularer.
  • Fejlretning: Selen kan køres i debug-tilstand, som giver dig mulighed for at gå gennem skrabeprocessen og se, hvad skraberen laver ved hvert trin. Dette er nyttigt til fejlfinding, når tingene går galt.

Forudsætninger for webskrabning med selen:

Python 3 er installeret på dit system.

Selen bibliotek installeret. Du kan installere det ved hjælp af pip med følgende kommando:

pip install Selenium

WebDriver installeret.

WebDriver er en separat eksekverbar fil, som Selenium bruger til at styre browseren. Her er de links, jeg fandt til at downloade WebDriver til de mest populære browsere:

Alternativt, og dette er den nemmeste måde, kan du også installere WebDriver ved hjælp af en pakkehåndtering som web driver-manager. Dette vil automatisk downloade og installere den relevante WebDriver for dig. For at installere web driver-manager kan du bruge følgende kommando:

pip install webdriver-manager

Uddrag komplet tekst fra websiden på få sekunder!

Gå over til Nanonets website skraber, Tilføj URL'en og klik på "Skrad", og download websideteksten som en fil med det samme. Prøv det gratis nu.

Nanonets' hjemmesideskraber


En trin-for-trin guide til selen-webskrabning

Trin 1: Installer og importer

Inden vi begynder, har vi sikret os, at vi har installeret Selenium og en passende driver. Vi bruger Edge-driveren i dette eksempel.

from selenium import webdriver
from Selenium.webdriver.common.keys import Keys
from Selenium.webdriver.common.by import By

Trin 2: Installer og få adgang til WebDriver

Vi kan oprette en ny forekomst af Edge-driveren ved at køre følgende kode:

driver = webdriver.Edge()

Trin 3: Få adgang til webstedet via Python

Dernæst skal vi tilgå søgemaskinens hjemmeside. I dette tilfælde vil vi bruge Bing.

driver.get("https://www.bing.com")

Trin 4: Find specifikke oplysninger, du skraber

Vi ønsker at udtrække antallet af søgeresultater for et bestemt navn. Det kan vi gøre ved at finde HTML-elementet, der indeholder antallet af søgeresultater

results = driver.find_elements(By.XPATH, "//*[@id='b_tween']/span")

Trin 5: Gør det sammen

Nu hvor vi har alle brikkerne, kan vi kombinere dem for at udtrække søgeresultaterne for et bestemt navn.

try:
search_box = driver.find_element(By.NAME, "q")
search_box.clear()
search_box.send_keys("John Doe") # enter your name in the search box
search_box.submit() # submit the search
results = driver.find_elements(By.XPATH, "//*[@id='b_tween']/span")
for result in results:
text = result.text.split()[1] # extract the number of results
print(text)
# save it to a file
with open("results.txt", "w") as f:
f.write(text)
except Exception as e:
print(f"An error occurred: {e}")

Trin 6: Gem dataene

Endelig kan vi gemme de udpakkede data i en tekstfil.

med open(“results.txt”, “w”) som f:

f.write(text)

Brug af en proxy med Selenium Wire

Selenium Wire er et bibliotek, der udvider Seleniums funktionalitet ved at give dig mulighed for at inspicere og ændre HTTP-anmodninger og -svar. For eksempel kan den også bruges til nemt at konfigurere en proxy til din Selenium WebDriver

Installer Selenium Wire

pip install selenium-wire

Konfigurer proxyen

from selenium import webdriver
from Selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
PROXY_HOST = 'your.proxy.host'
PROXY_PORT = 'your_proxy_port'
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://{}:{}'.format(PROXY_HOST, PROXY_PORT))
driver = wiredriver.Chrome(options=chrome_options)

Brug Selenium Wire til at inspicere og ændre anmodninger.

for request in driver.requests:
if request.response:
print(request.url, request.response.status_code, request.response.headers['Content-Type'])

I koden ovenfor gennemgår vi alle anmodninger fra WebDriveren under web-skrabe-sessionen. For hver anmodning kontrollerer vi, om der er modtaget et svar, og udskriver URL, statuskode og indholdstype for svaret

Brug af Selenium til at udtrække alle titler fra en webside

Her er et eksempel på Python-kode, der bruger Selenium til at skrabe alle titlerne på en webside:

from selenium import webdriver
# Initialize the webdriver
driver = webdriver.Chrome()
# Navigate to the webpage
driver.get("https://www.example.com")
# Find all the title elements on the page
title_elements = driver.find_elements_by_tag_name("title")
# Extract the text from each title element
titles = [title.text for title in title_elements]
# Print the list of titles
print(titles)
# Close the webdriver
driver.quit()

I dette eksempel importerer vi først webdrivermodulet fra Selenium og initialiserer derefter en ny Chrome webdriverinstans. Vi navigerer til den webside, vi vil skrabe, og bruger derefter metoden find_elements_by_tag_name til at finde alle titelelementerne på siden.

Vi bruger derefter en listeforståelse til at udtrække teksten fra hvert titelelement og gemmer den resulterende liste over titler i en variabel kaldet titler. Til sidst udskriver vi listen over titler og lukker webdriverforekomsten.

Bemærk, at du skal have Selenium- og Chrome-webdriverpakkerne installeret i dit Python-miljø, for at denne kode kan fungere. Du kan installere dem ved hjælp af pip, som sådan:

pip install selenium chromedriver-binary

Sørg også for at opdatere URL'en i driveren. få en metode til at pege på den webside, du vil skrabe.

Konklusion

Afslutningsvis er webskrabning med selen et kraftfuldt værktøj til at udtrække data fra websteder. Det giver dig mulighed for at automatisere processen med at indsamle data og kan spare dig betydelig tid og kræfter. Ved at bruge Selenium kan du interagere med websteder ligesom en menneskelig bruger og udtrække de data, du har brug for, mere effektivt.

Alternativt kan du bruge no-code værktøjer som Nanonets' værktøj til hjemmesideskraber for nemt at udtrække alle tekstelementer fra HTML. Det er helt gratis at bruge.


Uddrag tekst fra enhver webside med blot et enkelt klik. Gå over til Nanonets website skraber, Tilføj URL'en og klik på "Skrad", og download websideteksten som en fil med det samme. Prøv det gratis nu.

Nanonets' hjemmesideskraber


Ofte stillede spørgsmål:

Er Selen bedre end BeautifulSoup?

Selen og BeautifulSoup er værktøjer, der tjener forskellige formål i web-skrabning. Mens Selenium primært bruges til at automatisere webbrowsere, er BeautifulSoup et Python-bibliotek til at analysere HTML- og XML-dokumenter.

Selen er bedre end BeautifulSoup, når det kommer til at skrabe dynamiske websider. Dynamiske websider oprettes ved hjælp af JavaScript eller andre scriptsprog. Disse sider indeholder ofte elementer, der ikke er synlige, før siden er fuldt indlæst, eller indtil brugeren interagerer med dem. Selen kan interagere med disse elementer, hvilket gør det til et kraftfuldt værktøj til at skrabe data fra dynamiske websider.

På den anden side er BeautifulSoup bedre end Selen, når man analyserer HTML- og XML-dokumenter. BeautifulSoup giver en enkel og intuitiv grænseflade til at parse HTML- og XML-dokumenter og udtrække de data, du har brug for. Det er et letvægtsbibliotek, der ikke kræver en webbrowser, hvilket gør det hurtigere og mere effektivt end Selen i nogle tilfælde.

Kort sagt, om Selen er bedre end BeautifulSoup afhænger af opgaven. Hvis du har brug for at skrabe data fra dynamiske websider, så er Selen det bedre valg. Men hvis du har brug for at parse HTML- og XML-dokumenter, så er BeautifulSoup det bedre valg.

Skal jeg bruge selen eller scrapy?

Selen bruges primært til at automatisere webbrowsere og er bedst egnet til at skrabe data fra dynamiske websider. Hvis du har brug for at interagere med websider, der indeholder elementer, der ikke er synlige, før siden er fuldt indlæst, eller indtil brugeren interagerer med dem, så er Selenium det bedre valg. Selen kan også interagere med websider, der kræver godkendelse eller andre brugerinputformularer.

Scrapy, på den anden side, er en Python-baseret web-skraberamme designet til at skrotte data fra strukturerede websteder. Det er et kraftfuldt og fleksibelt værktøj, der giver mange funktioner til at crawle og skrabe hjemmesider. Det kan bruges til at skrabe data fra flere sider eller websteder og håndtere komplekse skrabeopgaver såsom at følge links og håndtere paginering. Scrapy er også mere effektivt end Selen med hensyn til hukommelse og behandlingsressourcer, hvilket gør det til et bedre valg til store web-skrabeprojekter.

Om du skal bruge Selen eller Scrapy afhænger af de specifikke krav til dit web-skrabeprojekt. Hvis du har brug for at skrabe data fra dynamiske websider eller interagere med websider, der kræver godkendelse eller andet brugerinput, så er Selenium det bedre valg. Men hvis du har brug for at skrabe data fra strukturerede hjemmesider eller udføre komplekse skrabeopgaver, så er Scrapy det bedre valg.

Hvilket sprog er bedst til web-skrabning?

Python er et af de mest populære sprog til web-skrabning på grund af dets brugervenlighed, et stort udvalg af biblioteker og kraftfulde skrabningsrammer som Scrapy, requests, beautifulSoup og Selenium. Python er også let at lære og bruge, hvilket gør det til et godt valg for begyndere

Mange programmeringssprog kan bruges til web-skrabning, men nogle egner sig bedre til opgaven end andre. Det bedste sprog til webskrabning afhænger af forskellige faktorer, såsom opgavens kompleksitet, målwebstedet og din personlige præference.

Andre sprog som R, JavaScript og PHP kan også bruges afhængigt af de specifikke krav til dit web-skrabeprojekt.

Hvorfor er selen vigtigt i web-skrabning?

Selen er et vigtigt værktøj til webskrabning af flere grunde:

Skrabning af dynamiske websider: Mange websteder bruger i dag dynamisk indhold og brugerinteraktioner til at vise data. Det betyder, at meget indhold på hjemmesiden indlæses via JavaScript eller AJAX. Selen er meget effektiv til at skrabe disse dynamiske websteder, fordi det kan interagere med elementer på siden og simulere brugerinteraktioner såsom rulning og klik. Dette gør det nemmere at skrabe data fra websteder, der er stærkt afhængige af dynamisk indhold. Den er bedst egnet til håndtering af cookies og sessioner, automatiseret test, cross-browser-kompatibilitet og skalerbarhed:

Kan du bruge Selen og BeautifulSoup sammen?

Ja, du kan bruge dem sammen. Selen interagerer primært med websider og simulerer brugerinteraktioner såsom at klikke, rulle og udfylde formularer. På den anden side er BeautifulSoup et Python-bibliotek, der bruges til at parse HTML- og XML-dokumenter og udtrække data fra dem. Ved at kombinere Selenium og BeautifulSoup kan du skabe et kraftfuldt web-skrabeværktøj til at interagere med websider og udtrække data fra dem. Selenium kan håndtere dynamisk indhold og brugerinteraktioner, mens BeautifulSoup kan parse HTML og udtrække data fra sidekilden.

Det er dog værd at bemærke, at det kan være mere ressourcekrævende og langsommere at bruge begge værktøjer sammen. Så det er vigtigt at evaluere kravene til dit web-skrabeprojekt og vælge de rigtige værktøjer til jobbet.

Tidsstempel:

Mere fra AI og maskinindlæring