Verkkokaapiminen seleenillä: täydellinen opas

Verkkokaapiminen seleenillä: täydellinen opas

Lähdesolmu: 2538197

Haluatko poimia tietoja verkkosivulta?

Siirry Nanonetsiin verkkosivuston kaavin, Lisää URL-osoite ja napsauta "Scrape" ja lataa verkkosivun teksti tiedostona välittömästi. Kokeile nyt ilmaiseksi.

Nanonetsin verkkosivuston kaavin


Mikä on seleeniverkkoraapiminen?

Web-kaappaus on prosessi, jolla poimitaan tietoja verkkosivustoilta. Se on tehokas tekniikka, joka mullistaa tiedonkeruun ja -analyysin. Valtavan verkkotiedon ansiosta web-kaappauksesta on tullut olennainen työkalu yrityksille ja yksityishenkilöille.

Selenium on avoimen lähdekoodin web-kehitystyökalu, jota käytetään web-selaustoimintojen automatisointiin. Se kehitettiin vuonna 2004, ja sitä käytetään pääasiassa verkkosivustojen ja sovellusten automaattiseen testaamiseen eri selaimilla, mutta siitä on nyt tullut suosittu työkalu web-kaappaukseen. Seleeniä voidaan käyttää useiden ohjelmointikielien kanssa, mukaan lukien Python, Java ja C#. Se tarjoaa vankat sovellusliittymät verkkosivujen vuorovaikutukseen, mukaan lukien navigointiin, napsautukseen, kirjoittamiseen ja vierittämiseen.

Selenium-verkkokaappauksella tarkoitetaan Selenium-selainautomaatiotyökalun käyttöä Pythonin kanssa tietojen poimimiseen verkkosivustoilta. Seleenin avulla kehittäjät voivat ohjelmoidusti ohjata verkkoselainta ohjelmallisesti, mikä tarkoittaa, että he voivat olla vuorovaikutuksessa verkkosivustojen kanssa ikään kuin he olisivat käyttäjiä.


Miksi käyttää Seleniumia ja Pythonia verkkokaappaukseen?

Python on suosittu ohjelmointikieli web-kaappaukseen, koska siinä on monia kirjastoja ja kehyksiä, joiden avulla on helppo poimia tietoja verkkosivustoilta.

Pythonin ja Seleniumin käyttäminen verkon kaapimiseen tarjoaa useita etuja muihin verkon kaavintatekniikoihin verrattuna:

  • Dynaamiset sivustot: Dynaamiset verkkosivut luodaan JavaScriptillä tai muilla komentosarjakielillä. Nämä sivut sisältävät usein näkyviä elementtejä, kun sivu on latautunut kokonaan tai kun käyttäjä on vuorovaikutuksessa niiden kanssa. Seleeni voi olla vuorovaikutuksessa näiden elementtien kanssa, mikä tekee siitä tehokkaan työkalun tietojen kaappaamiseen dynaamilta verkkosivuilta.
  • Käyttäjävuorot: Seleeni voi simuloida käyttäjien vuorovaikutuksia, kuten napsautuksia, lomakkeiden lähetyksiä ja vierittämistä. Tämän avulla voit kaapata verkkosivustoja, jotka vaativat käyttäjän syötteitä, kuten kirjautumislomakkeita.
  • virheenkorjaus: Seleeniä voidaan ajaa virheenkorjaustilassa, jolloin voit siirtyä kaavinprosessin läpi ja nähdä, mitä kaavin tekee kussakin vaiheessa. Tästä on hyötyä vianmäärityksessä, kun asiat menevät pieleen.

Edellytykset seleenin kaapimiseen:

Python 3 on asennettu järjestelmääsi.

Seleenikirjasto asennettu. Voit asentaa sen pip:llä seuraavalla komennolla:

pip install Selenium

WebDriver asennettuna.

WebDriver on erillinen suoritettava tiedosto, jota Selenium käyttää selaimen ohjaamiseen. Tässä ovat linkit, jotka löysin WebDriverin lataamiseen suosituimpiin selaimiin:

Vaihtoehtoisesti, ja tämä on helpoin tapa, voit myös asentaa WebDriverin käyttämällä paketinhallintaa, kuten Web-ajurien hallintaa. Tämä lataa ja asentaa automaattisesti sinulle sopivan WebDriverin. Voit asentaa web-ajurin hallintaohjelman käyttämällä seuraavaa komentoa:

pip install webdriver-manager

Pura koko teksti verkkosivulta sekunneissa!

Siirry Nanonetsiin verkkosivuston kaavin, Lisää URL-osoite ja napsauta "Scrape" ja lataa verkkosivun teksti tiedostona välittömästi. Kokeile nyt ilmaiseksi.

Nanonetsin verkkosivuston kaavin


Vaiheittainen opas seleeniradan kaapimiseen

Vaihe 1: Asenna ja tuonti

Ennen kuin aloitamme, olemme varmistaneet, että olemme asentaneet Seleniumin ja asianmukaisen ohjaimen. Käytämme tässä esimerkissä Edge-ohjainta.

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

Vaihe 2: Asenna WebDriver ja käytä sitä

Voimme luoda uuden Edge-ohjaimen esiintymän suorittamalla seuraavan koodin:

driver = webdriver.Edge()

Vaihe 3: Siirry verkkosivustolle Pythonin kautta

Seuraavaksi meidän on käytettävä hakukoneen verkkosivustoa. Tässä tapauksessa käytämme Bingiä.

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

Vaihe 4: Etsi tarkat tiedot, joita olet raapumassa

Haluamme poimia tietyn nimen hakutulosten määrän. Voimme tehdä tämän etsimällä HTML-elementin, joka sisältää hakutulosten määrän

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

Vaihe 5: Tee se yhdessä

Nyt kun meillä on kaikki osat, voimme yhdistää ne tietyn nimen hakutulosten poimimiseksi.

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

Vaihe 6: Tallenna tiedot

Lopuksi voimme tallentaa puretut tiedot tekstitiedostoon.

jossa open("results.txt", "w") muodossa f:

f.write(text)

Välityspalvelimen käyttäminen Selenium Wire -langan kanssa

Selenium Wire on kirjasto, joka laajentaa Seleniumin toimintoja mahdollistamalla HTTP-pyyntöjen ja -vastausten tarkastamisen ja muokkaamisen. Esimerkiksi Sitä voidaan käyttää myös välityspalvelimen määrittämiseen Selenium WebDriverille helposti

Asenna Selenium Wire

pip install selenium-wire

Aseta välityspalvelin

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)

Käytä Selenium Wireä pyyntöjen tarkastamiseen ja muokkaamiseen.

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

Yllä olevassa koodissa käymme läpi kaikki WebDriverin web-kaappausistunnon aikana tekemät pyynnöt. Tarkistamme jokaisen pyynnön kohdalla, onko saatu vastaus ja tulostamme vastauksen URL-osoitteen, tilakoodin ja sisältötyypin

Seleenin käyttäminen kaikkien nimikkeiden poimimiseen verkkosivulta

Tässä on esimerkki Python-koodista, joka käyttää Seleniumia verkkosivun kaikkien otsikoiden kaappaamiseen:

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

Tässä esimerkissä tuomme ensin verkkoohjainmoduulin Seleniumista ja alustamme sitten uuden Chrome-verkkoajurin esiintymän. Siirrymme sivulle, jonka haluamme kaapata, ja etsimme sitten kaikki sivun otsikkoelementit menetelmällä find_elements_by_tag_name.

Käytämme sitten luettelon ymmärtämistä poimiaksemme tekstin jokaisesta otsikkoelementistä ja tallentaaksemme tuloksena olevan otsikkoluettelon muuttujaan nimeltä titles. Lopuksi tulostamme nimikkeiden luettelon ja suljemme verkkoajurin esiintymän.

Huomaa, että Python-ympäristössäsi on oltava Selenium- ja Chrome-verkkoohjainpaketit asennettuna, jotta tämä koodi toimii. Voit asentaa ne pip:n avulla, kuten:

pip install selenium chromedriver-binary

Muista myös päivittää URL-osoite ohjaimessa. saada menetelmä osoittaaksesi verkkosivulle, jonka haluat kaapata.

Yhteenveto

Yhteenvetona voidaan todeta, että web-kaappaus Seleniumilla on tehokas työkalu tietojen poimimiseen verkkosivustoilta. Sen avulla voit automatisoida tiedonkeruun ja säästää huomattavasti aikaa ja vaivaa. Seleenin avulla voit olla vuorovaikutuksessa verkkosivustojen kanssa kuten ihminen ja poimia tarvitsemasi tiedot tehokkaammin.

Vaihtoehtoisesti voit käyttää koodittomia työkaluja, kuten Nanonets' verkkosivuston kaavintyökalu Voit helposti purkaa kaikki tekstielementit HTML:stä. Se on täysin ilmainen käyttää.


Poimi tekstiä miltä tahansa verkkosivulta yhdellä napsautuksella. Siirry Nanonetsiin verkkosivuston kaavin, Lisää URL-osoite ja napsauta "Scrape" ja lataa verkkosivun teksti tiedostona välittömästi. Kokeile nyt ilmaiseksi.

Nanonetsin verkkosivuston kaavin


FAQ:

Onko seleeni parempi kuin BeautifulSoup?

Selenium ja BeautifulSoup ovat työkaluja, jotka palvelevat eri tarkoituksia verkkokaapinnassa. Seleeniä käytetään ensisijaisesti verkkoselaimien automatisointiin, kun taas BeautifulSoup on Python-kirjasto HTML- ja XML-dokumenttien jäsentämiseen.

Seleeni on parempi kuin BeautifulSoup dynaamisten verkkosivujen kaapimisessa. Dynaamiset verkkosivut luodaan JavaScriptillä tai muilla komentosarjakielillä. Nämä sivut sisältävät usein elementtejä, jotka eivät ole näkyvissä ennen kuin sivu on latautunut kokonaan tai kunnes käyttäjä on vuorovaikutuksessa niiden kanssa. Seleeni voi olla vuorovaikutuksessa näiden elementtien kanssa, mikä tekee siitä tehokkaan työkalun tietojen kaappaamiseen dynaamilta verkkosivuilta.

Toisaalta BeautifulSoup on parempi kuin Selenium jäsennettäessä HTML- ja XML-dokumentteja. BeautifulSoup tarjoaa yksinkertaisen ja intuitiivisen käyttöliittymän HTML- ja XML-dokumenttien jäsentämiseen ja tarvitsemiesi tietojen poimimiseen. Se on kevyt kirjasto, joka ei vaadi verkkoselainta, joten se on joissain tapauksissa nopeampi ja tehokkaampi kuin Selenium.

Yhteenvetona, se, onko Selenium parempi kuin BeautifulSoup, riippuu tehtävästä. Jos haluat kaapata tietoja dynaamisista verkkosivuista, Selenium on parempi valinta. Jos kuitenkin haluat jäsentää HTML- ja XML-asiakirjoja, BeautifulSoup on parempi valinta.

Pitäisikö minun käyttää seleeniä vai scrapya?

Seleeniä käytetään ensisijaisesti verkkoselaimien automatisointiin ja se soveltuu parhaiten tietojen kaappaamiseen dynaamisista verkkosivuista. Jos joudut olemaan vuorovaikutuksessa verkkosivujen kanssa, jotka sisältävät elementtejä, jotka eivät ole näkyvissä ennen kuin sivu on latautunut kokonaan tai kunnes käyttäjä on vuorovaikutuksessa niiden kanssa, Selenium on parempi valinta. Seleeni voi myös olla vuorovaikutuksessa todennusta tai muita käyttäjän syöttölomakkeita vaativien verkkosivujen kanssa.

Scrapy puolestaan ​​on Python-pohjainen verkkokaappauskehys, joka on suunniteltu poistamaan tietoja strukturoiduilta verkkosivustoilta. Se on tehokas ja joustava työkalu, joka tarjoaa monia ominaisuuksia verkkosivustojen indeksointiin ja kaapimiseen. Sitä voidaan käyttää tietojen kaappaamiseen useilta sivuilta tai verkkosivustoilta ja monimutkaisten kaavintatehtävien hoitamiseen, kuten linkkien seuraamiseen ja sivuttamiseen. Scrapy on myös seleeniä tehokkaampi muistin ja prosessointiresurssien suhteen, joten se on parempi valinta suuriin verkkokaapimisprojekteihin.

Se, kannattaako käyttää Seleeniä vai Scrapya, riippuu verkkokaapimisprojektisi erityisvaatimuksista. Jos sinun täytyy kaapata tietoja dynaamisista verkkosivuista tai olla vuorovaikutuksessa todennusta tai muuta käyttäjän syötettä vaativien verkkosivujen kanssa, Selenium on parempi valinta. Jos sinun on kuitenkin haettava tietoja strukturoiduilta verkkosivustoilta tai suoritettava monimutkaisia ​​kaavinta tehtäviä, Scrapy on parempi valinta.

Mikä kieli on paras web-kaappaukseen?

Python on yksi suosituimmista web-kaappauskielistä helppokäyttöisyytensä, suuren kirjastovalikoimansa ja tehokkaiden kaavintakehysten, kuten Scrapy, requests, beautifulSoup ja Selenium, ansiosta. Python on myös helppo oppia ja käyttää, joten se on loistava valinta aloittelijoille

Monia ohjelmointikieliä voidaan käyttää web-kaappaukseen, mutta jotkut sopivat tehtävään paremmin kuin toiset. Paras kieli verkon kaapimiseen riippuu useista tekijöistä, kuten tehtävän monimutkaisuudesta, kohdesivustosta ja henkilökohtaisista mieltymyksistäsi.

Myös muita kieliä, kuten R, JavaScript ja PHP, voidaan käyttää verkkoraapimisprojektisi erityisvaatimuksista riippuen.

Miksi seleeni on tärkeä verkon kaapimisessa?

Seleeni on tärkeä työkalu verkon kaapimisessa useista syistä:

Dynaamisten Web-sivujen kaapiminen: Monet verkkosivustot käyttävät nykyään dynaamista sisältöä ja käyttäjien vuorovaikutusta tietojen näyttämiseen. Tämä tarkoittaa, että suuri osa verkkosivuston sisällöstä ladataan JavaScriptin tai AJAXin kautta. Seleeni on erittäin tehokas näiden dynaamisten verkkosivustojen kaappaamisessa, koska se voi olla vuorovaikutuksessa sivun elementtien kanssa ja simuloida käyttäjän vuorovaikutusta, kuten vierittämistä ja napsauttamista. Tämä helpottaa tietojen keräämistä verkkosivustoilta, jotka ovat voimakkaasti riippuvaisia ​​dynaamisesta sisällöstä. Se sopii parhaiten evästeiden ja istuntojen käsittelyyn, automaattiseen testaukseen, selainten väliseen yhteensopivuuteen ja skaalautumiseen:

Voitko käyttää seleeniä ja BeautifulSoupia yhdessä?

Kyllä, voit käyttää niitä yhdessä. Seleeni on ensisijaisesti vuorovaikutuksessa verkkosivujen kanssa ja simuloi käyttäjien vuorovaikutusta, kuten napsautusta, vierittämistä ja lomakkeiden täyttämistä. Toisaalta BeautifulSoup on Python-kirjasto, jota käytetään HTML- ja XML-dokumenttien jäsentämiseen ja tietojen poimimiseen niistä. Yhdistämällä Seleniumin ja BeautifulSoupin voit luoda tehokkaan verkkokaappaustyökalun, jolla voit olla vuorovaikutuksessa verkkosivujen kanssa ja poimia niistä tietoja. Selenium pystyy käsittelemään dynaamista sisältöä ja käyttäjien vuorovaikutusta, kun taas BeautifulSoup voi jäsentää HTML:ää ja poimia tietoja sivun lähteestä.

On kuitenkin syytä huomata, että molempien työkalujen käyttäminen yhdessä voi olla resurssivaltaisempaa ja hitaampaa kuin yhden. Joten on tärkeää arvioida verkkokaapimisprojektisi vaatimukset ja valita oikeat työkalut työhön.

Aikaleima:

Lisää aiheesta Tekoäly ja koneoppiminen