Web Scraping cu seleniu: Ghidul complet

Web Scraping cu seleniu: Ghidul complet

Nodul sursă: 2538197

Doriți să extrageți date dintr-o pagină web?

Mergeți la Nanonets răzuitor site, Adăugați adresa URL și faceți clic pe „Scrape” și descărcați instantaneu textul paginii web ca fișier. Încercați-l gratuit acum.

Razuitoarea site-ului Nanonets


Ce este Selenium Web Scraping?

Web scraping este procesul de extragere a datelor de pe site-uri web. Este o tehnică puternică care revoluționează colectarea și analiza datelor. Cu date vaste online, web scraping a devenit un instrument esențial pentru companii și persoane fizice.

Selenium este un instrument de dezvoltare web open-source folosit pentru a automatiza funcțiile de navigare pe web. A fost dezvoltat în 2004 și este folosit în principal pentru a testa automat site-uri web și aplicații în diferite browsere, dar acum a devenit un instrument popular pentru web scraping. Selenium poate fi folosit cu mai multe limbaje de programare, inclusiv Python, Java și C#. Oferă API-uri robuste pentru interacțiunea cu paginile web, inclusiv navigarea, clicurile, tastarea și derularea.

Selenium web scraping se referă la utilizarea instrumentului de automatizare a browserului Selenium cu Python pentru a extrage date de pe site-uri web. Selenium permite dezvoltatorilor să controleze programatic un browser web, ceea ce înseamnă că pot interacționa cu site-urile web ca și cum ar fi utilizatori umani.


De ce să folosiți Selenium și Python pentru web scraping?

Python este un limbaj de programare popular pentru web scraping, deoarece are multe biblioteci și cadre care facilitează extragerea datelor de pe site-uri web.

Utilizarea Python și Selenium pentru web scraping oferă mai multe avantaje față de alte tehnici de web scraping:

  • Site-uri web dinamice: Paginile web dinamice sunt create folosind JavaScript sau alte limbaje de scripting. Aceste pagini conțin adesea elemente vizibile odată ce pagina este complet încărcată sau când utilizatorul interacționează cu ele. Seleniul poate interacționa cu aceste elemente, făcându-l un instrument puternic pentru extragerea datelor din pagini web dinamice.
  • Interacțiunile utilizatorului: Selenium poate simula interacțiunile utilizatorului, cum ar fi clicurile, trimiterile de formulare și derularea. Acest lucru vă permite să răzuiți site-uri web care necesită intrarea utilizatorului, cum ar fi formularele de conectare.
  • Depanare: Selenium poate fi rulat în modul de depanare, ceea ce vă permite să treceți prin procesul de scraping și să vedeți ce face scraperul la fiecare pas. Acest lucru este util pentru depanarea atunci când lucrurile merg prost.

Cerințe preliminare pentru web scraping cu seleniu:

Python 3 este instalat pe sistemul dumneavoastră.

Biblioteca Selenium instalată. Îl puteți instala folosind pip cu următoarea comandă:

pip install Selenium

WebDriver instalat.

WebDriver este un executabil separat pe care Selenium îl folosește pentru a controla browserul. Iată link-urile pe care le-am găsit pentru a descărca WebDriver pentru cele mai populare browsere:

Alternativ, și acesta este cel mai simplu mod, puteți instala și WebDriver folosind un manager de pachete, cum ar fi web driver-manager. Aceasta va descărca și instala automat WebDriver-ul potrivit pentru dvs. Pentru a instala web driver-manager, puteți utiliza următoarea comandă:

pip install webdriver-manager

Extrageți textul complet de pe pagina web în câteva secunde!

Mergeți la Nanonets răzuitor site, Adăugați adresa URL și faceți clic pe „Scrape” și descărcați instantaneu textul paginii web ca fișier. Încercați-l gratuit acum.

Razuitoarea site-ului Nanonets


Un ghid pas cu pas pentru răzuirea web cu seleniu

Pasul 1: Instalează și importă

Înainte de a începe, ne-am asigurat că am instalat Selenium și un driver adecvat. Vom folosi driverul Edge în acest exemplu.

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

Pasul 2: Instalați și accesați WebDriver

Putem crea o nouă instanță a driverului Edge rulând următorul cod:

driver = webdriver.Edge()

Pasul 3: Accesați site-ul prin Python

În continuare, trebuie să accesăm site-ul web al motorului de căutare. În acest caz, vom folosi Bing.

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

Pasul 4: Găsiți informații specifice pe care le eliminați

Dorim să extragem numărul de rezultate ale căutării pentru un anumit nume. Putem face acest lucru prin localizarea elementului HTML care conține numărul de rezultate ale căutării

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

Pasul 5: Fă-o împreună

Acum că avem toate piesele, le putem combina pentru a extrage rezultatele căutării pentru un anumit nume.

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

Pasul 6: Stocați datele

În cele din urmă, putem stoca datele extrase într-un fișier text.

cu open(„results.txt”, „w”) ca f:

f.write(text)

Folosind un proxy cu Selenium Wire

Selenium Wire este o bibliotecă care extinde funcționalitatea Selenium, permițându-vă să inspectați și să modificați cererile și răspunsurile HTTP. De exemplu, poate fi folosit și pentru a configura cu ușurință un proxy pentru Selenium WebDriver

Instalați firul de seleniu

pip install selenium-wire

Configurați proxy-ul

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)

Utilizați Selenium Wire pentru a inspecta și modifica cererile.

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

În codul de mai sus, trecem peste toate solicitările făcute de WebDriver în timpul sesiunii de web scraping. Pentru fiecare solicitare, verificăm dacă a fost primit un răspuns și tipărim adresa URL, codul de stare și tipul de conținut al răspunsului

Folosind Selenium pentru a extrage toate titlurile dintr-o pagină web

Iată un exemplu de cod Python care folosește seleniu pentru a răzui toate titlurile unei pagini web:

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

În acest exemplu, importăm mai întâi modulul de driver web din Selenium, apoi inițializam o nouă instanță de driver web Chrome. Navigam la pagina web pe care vrem să o răzuim și apoi folosim metoda find_elements_by_tag_name pentru a găsi toate elementele de titlu de pe pagină.

Folosim apoi o listă de înțelegere pentru a extrage textul din fiecare element de titlu și pentru a stoca lista rezultată de titluri într-o variabilă numită titluri. În cele din urmă, imprimăm lista de titluri și închidem instanța driverului web.

Rețineți că va trebui să aveți pachetele de driver web Selenium și Chrome instalate în mediul dvs. Python pentru ca acest cod să funcționeze. Le puteți instala folosind pip, astfel:

pip install selenium chromedriver-binary

De asemenea, asigurați-vă că actualizați adresa URL în driver. obțineți o metodă pentru a indica pagina web pe care doriți să o răzuiți.

Concluzie

În concluzie, web scraping cu seleniu este un instrument puternic pentru extragerea datelor de pe site-uri web. Vă permite să automatizați procesul de colectare a datelor și vă poate economisi timp și efort semnificativ. Folosind Selenium, puteți interacționa cu site-urile web la fel ca un utilizator uman și puteți extrage mai eficient datele de care aveți nevoie.

Alternativ, puteți utiliza instrumente fără cod precum Nanonets instrument de răzuire a site-ului web pentru a extrage cu ușurință toate elementele text din HTML. Este gratuit de utilizat complet.


Extrageți text din orice pagină web cu un singur clic. Mergeți la Nanonets răzuitor site, Adăugați adresa URL și faceți clic pe „Scrape” și descărcați instantaneu textul paginii web ca fișier. Încercați-l gratuit acum.

Razuitoarea site-ului Nanonets


Întrebări frecvente:

Este seleniul mai bun decât BeautifulSoup?

Selenium și BeautifulSoup sunt instrumente care servesc diferite scopuri în web scraping. În timp ce Selenium este folosit în principal pentru automatizarea browserelor web, BeautifulSoup este o bibliotecă Python pentru analizarea documentelor HTML și XML.

Seleniul este mai bun decât BeautifulSoup când vine vorba de răzuirea paginilor web dinamice. Paginile web dinamice sunt create folosind JavaScript sau alte limbaje de scripting. Aceste pagini conțin adesea elemente care nu sunt vizibile până când pagina este complet încărcată sau până când utilizatorul interacționează cu ele. Seleniul poate interacționa cu aceste elemente, făcându-l un instrument puternic pentru extragerea datelor din pagini web dinamice.

Pe de altă parte, BeautifulSoup este mai bun decât Selenium atunci când analizează documente HTML și XML. BeautifulSoup oferă o interfață simplă și intuitivă pentru analizarea documentelor HTML și XML și extragerea datelor de care aveți nevoie. Este o bibliotecă ușoară care nu necesită un browser web, ceea ce o face mai rapidă și mai eficientă decât Selenium în unele cazuri.

Pe scurt, dacă Selenium este mai bun decât BeautifulSoup depinde de sarcină. Dacă trebuie să răzuiți date din pagini web dinamice, atunci Selenium este alegerea mai bună. Cu toate acestea, dacă trebuie să analizați documente HTML și XML, atunci BeautifulSoup este alegerea mai bună.

Ar trebui să folosesc Selenium sau Scrapy?

Seleniul este folosit în principal pentru automatizarea browserelor web și este cel mai potrivit pentru răzuirea datelor din pagini web dinamice. Dacă trebuie să interacționați cu pagini web care conțin elemente care nu sunt vizibile până când pagina este complet încărcată sau până când utilizatorul interacționează cu acestea, atunci Selenium este alegerea mai bună. Selenium poate interacționa și cu pagini web care necesită autentificare sau alte formulare de introducere a utilizatorului.

Scrapy, pe de altă parte, este un cadru de scraping web bazat pe Python, conceput pentru a elimina date de pe site-uri web structurate. Este un instrument puternic și flexibil care oferă multe funcții pentru accesarea cu crawlere și răzuirea site-urilor web. Poate fi folosit pentru a răzui date de pe mai multe pagini sau site-uri web și pentru a gestiona sarcini complexe de scraping, cum ar fi urmărirea link-urilor și gestionarea paginarii. Scrapy este, de asemenea, mai eficient decât Selenium în ceea ce privește memoria și resursele de procesare, ceea ce îl face o alegere mai bună pentru proiectele de web scraping la scară largă.

Dacă ar trebui să utilizați Selenium sau Scrapy depinde de cerințele specifice ale proiectului dvs. de web scraping. Dacă trebuie să răzuiți date din pagini web dinamice sau să interacționați cu pagini web care necesită autentificare sau alte intrări ale utilizatorului, atunci Selenium este alegerea mai bună. Cu toate acestea, dacă trebuie să răzuiți date de pe site-uri web structurate sau să efectuați sarcini complexe de scraping, atunci Scrapy este alegerea mai bună.

Ce limbă este cea mai bună pentru web scraping?

Python este unul dintre cele mai populare limbaje pentru web scraping datorită ușurinței sale de utilizare, a unei selecții mari de biblioteci și a cadrelor puternice de scraping precum Scrapy, requests, beautifulSoup și Selenium. Python este, de asemenea, ușor de învățat și utilizat, ceea ce îl face o alegere excelentă pentru începători

Multe limbaje de programare pot fi folosite pentru web scraping, dar unele sunt mai potrivite pentru sarcină decât altele. Cel mai bun limbaj pentru web scraping depinde de diverși factori, cum ar fi complexitatea sarcinii, site-ul țintă și preferințele dvs. personale.

Alte limbi precum R, JavaScript și PHP pot fi, de asemenea, utilizate în funcție de cerințele specifice ale proiectului dvs. de web scraping.

De ce este seleniul important în web scraping?

Seleniul este un instrument important în web scraping din mai multe motive:

Scraping Dynamic Web Pages: multe site-uri web folosesc astăzi conținut dinamic și interacțiunile utilizatorilor pentru a afișa date. Aceasta înseamnă că o mulțime de conținut de pe site-ul web este încărcat prin JavaScript sau AJAX. Selenium este foarte eficient în analizarea acestor site-uri web dinamice, deoarece poate interacționa cu elementele din pagină și poate simula interacțiunile utilizatorului, cum ar fi derularea și clicurile. Acest lucru facilitează extragerea datelor de pe site-uri web care depind în mare măsură de conținutul dinamic. Este cel mai potrivit pentru gestionarea cookie-urilor și a sesiunilor, testarea automată, compatibilitatea între browsere și scalabilitatea:

Puteți folosi Selenium și BeautifulSoup împreună?

Da, le puteți folosi împreună. Selenium interacționează în principal cu paginile web și simulează interacțiunile utilizatorului, cum ar fi clicurile, derularea și completarea formularelor. Pe de altă parte, BeautifulSoup este o bibliotecă Python folosită pentru analizarea documentelor HTML și XML și extragerea datelor din acestea. Combinând Selenium și BeautifulSoup, puteți crea un instrument puternic de web scraping pentru a interacționa cu paginile web și a extrage date din acestea. Selenium poate gestiona conținutul dinamic și interacțiunile utilizatorului, în timp ce BeautifulSoup poate analiza HTML și extrage date din sursa paginii.

Cu toate acestea, merită remarcat faptul că utilizarea ambelor instrumente împreună poate consuma mai mult resurse și mai lentă decât doar unul. Deci, este esențial să evaluați cerințele proiectului dvs. de web scraping și să alegeți instrumentele potrivite pentru job.

Timestamp-ul:

Mai mult de la AI și învățarea automată