logo

Python Web-kaappauksen opetusohjelma

Web-kaappaus, prosessi tietojen poimimiseksi verkkosivustoilta, on noussut tehokkaaksi tekniikaksi tiedon keräämiseen Internetin laajuudesta. Tässä opetusohjelmassa tutkimme erilaisia ​​Python-kirjastoja ja -moduuleja, joita käytetään yleisesti web-kaappaukseen, ja tutkimme, miksi Python 3 on suositeltu valinta tähän tehtävään.

Tärkeimmät paketit ja työkalut Python Web-kaappaukseen

Uusin versio Python , tarjoaa laajan valikoiman työkaluja ja kirjastoja, jotka on suunniteltu erityisesti verkon kaapimiseen, mikä tekee tietojen hakemisesta verkosta helpompaa kuin koskaan.



Sisällysluettelo

Pyyntömoduuli

Pyyntökirjastoa käytetään HTTP-pyyntöjen tekemiseen tiettyyn URL-osoitteeseen ja se palauttaa vastauksen. Python-pyynnöt tarjoavat sisäänrakennettuja toimintoja sekä pyynnön että vastauksen hallintaan.

pip install requests>

Esimerkki: Pyynnön tekeminen

Python-pyyntömoduulissa on useita sisäänrakennettuja menetelmiä HTTP-pyyntöjen tekemiseen määritettyyn URI-osoitteeseen GET-, POST-, PUT-, PATCH- tai HEAD-pyyntöjen avulla. HTTP-pyynnön tarkoituksena on joko noutaa tietoja määritetystä URI:sta tai siirtää tietoja palvelimelle. Se toimii pyyntö-vastausprotokollana asiakkaan ja palvelimen välillä. Täällä käytämme GET-pyyntöä. The GET-menetelmä käytetään tietojen hakemiseen tietystä palvelimesta tietyn URI:n avulla. GET-menetelmä lähettää koodatut käyttäjätiedot, jotka on liitetty sivupyyntöön.



Python
import requests # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # print content of request print(r.content)>

Lähtö

Python pyytää GET-pyyntöä

Lisätietoja saat osoitteestamme Python-pyyntöjen opetusohjelma .



BeautifulSoup kirjasto

Beautiful Soup tarjoaa muutamia yksinkertaisia ​​menetelmiä ja Pythonic-lauseita jäsennyspuun ohjaamiseen, etsimiseen ja muuttamiseen: työkalupakki asiakirjan tutkimiseen ja tarvitsemasi poistamiseen. Sovelluksen dokumentointi ei vaadi paljon koodia.

Beautiful Soup muuntaa saapuvat tietueet automaattisesti Unicode-muotoon ja lähtevät lomakkeet UTF-8-muotoon. Sinun ei tarvitse miettiä koodauksia, ellei asiakirja määrittele koodausta, eikä Beautiful Soup saa sitä. Sitten sinun tarvitsee vain valita alkuperäinen koodaus. Beautiful Soup sijaitsee kuuluisien Python-jäsentimien, kuten LXML:n ja HTML:n, päällä, jolloin voit kokeilla erilaisia ​​jäsennysstrategioita tai vaihtaa nopeutta joustavuuden vuoksi.

pip install beautifulsoup4>

Esimerkki

  1. Kirjastojen tuonti: Koodi tuo pyyntökirjaston HTTP-pyyntöjen tekemiseen ja BeautifulSoup-luokan bs4-kirjastosta HTML:n jäsentämistä varten.
  2. GET-pyynnön tekeminen: Se lähettää GET-pyynnön osoitteeseen https://www.techcodeview.com
  3. Tilakoodin tarkistus: Se tulostaa vastauksen tilakoodin, tyypillisesti 200 onnistumisen vuoksi.
  4. HTML-koodin jäsentäminen : Vastauksen HTML-sisältö jäsennetään BeautifulSoupin avulla ja tallennetaan muuttujakeittoon.
  5. Pretified HTML:n tulostaminen: Se tulostaa esitellyn version jäsennetystä HTML-sisällöstä luettavuutta ja analysointia varten.
Python
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())>

Lähtö

Python BeautifulSoup jäsennys HTML

Elementtien etsiminen luokittain

Nyt haluaisimme poimia hyödyllisiä tietoja HTML-sisällöstä. Soup-objekti sisältää kaikki sisäkkäisen rakenteen tiedot, jotka voidaan poimia ohjelmallisesti. Sivusto, jonka haluamme kaapata, sisältää paljon tekstiä, joten nyt raavitaan kaikki se sisältö. Ensin tarkastetaan verkkosivu, jonka haluamme kaapia.


valmistautua testiin mockito

Yllä olevassa kuvassa näemme, että koko sivun sisältö on div-osan alla, jossa on luokan merkintäsisältö. Käytämme etsintäluokkaa. Tämä luokka löytää annetun tunnisteen annetulla attribuutilla. Meidän tapauksessamme se löytää kaikki div, joiden luokka on merkintäsisältö.

Näemme, että sivun sisältö on alla

tag. Nyt meidän on löydettävä kaikki tässä luokassa olevat p-tunnisteet. Voimme käyttääetsi_kaikki luokan BeautifulSoup.

Python
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') s = soup.find('div', class_='entry-content') content = s.find_all('p') print(content)>

Lähtö:

find_all bs4

Lisätietoja saat osoitteestamme Python kaunis keitto .

Seleeni

Selenium on suosittu Python-moduuli, jota käytetään verkkoselaimien automatisointiin. Sen avulla kehittäjät voivat ohjata verkkoselaimia ohjelmallisesti, mikä mahdollistaa tehtävien, kuten verkon kaapimisen, automaattisen testauksen ja verkkosovellusten vuorovaikutuksen. Selenium tukee useita verkkoselaimia, mukaan lukien Chrome, Firefox, Safari ja Edge, joten se on monipuolinen työkalu selaimen automatisointiin.

Esimerkki 1: Firefoxille

Tässä esimerkissä ohjaamme selaimen Google-hakusivulle kyselyparametrilla geeksforgeeks. Selain lataa tämän sivun, ja voimme sitten jatkaa vuorovaikutusta sen kanssa ohjelmallisesti Seleenin avulla. Tämä vuorovaikutus voi sisältää tehtäviä, kuten hakutulosten poimimista, linkkien napsauttamista tai tietyn sisällön poistamista sivulta.

Python
# import webdriver  from selenium import webdriver # create webdriver object  driver = webdriver.Firefox() # get google.co.in  driver.get('https://google.co.in / search?q = geeksforgeeks')>

Lähtö

firefoxille

Esimerkki 2: Chrome

  1. Tuomme webdriver-moduulin Selenium-kirjastosta.
  2. Määritämme polun web-ohjaimen suoritettavaan tiedostoon. Sinun on ladattava selaimellesi sopiva ohjain ja annettava polku siihen. Tässä esimerkissä käytämme Chrome-ohjainta.
  3. Luomme verkkoselaimen uuden esiintymän käyttämällä webdriver.Chrome()-komentoa ja välitämme polun Chrome-ajurin suoritettavaan tiedostoon argumenttina.
  4. Siirrymme verkkosivulle kutsumalla get()-menetelmää selainobjektissa ja välittämällä verkkosivun URL-osoitteen.
  5. Poimimme tietoa verkkosivulta Seleniumin tarjoamilla erilaisilla menetelmillä. Tässä esimerkissä noudetaan sivun otsikko käyttämällä selainobjektin title-attribuuttia.
  6. Lopuksi suljemme selaimen quit()-menetelmällä.
Python
# importing necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager # for holding the resultant list element_list = [] for page in range(1, 3, 1): page_url = 'https://webscraper.io/test-sites/e-commerce/static/computers/laptops?page=' + str(page) driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(page_url) title = driver.find_elements(By.CLASS_NAME, 'title') price = driver.find_elements(By.CLASS_NAME, 'price') description = driver.find_elements(By.CLASS_NAME, 'description') rating = driver.find_elements(By.CLASS_NAME, 'ratings') for i in range(len(title)): element_list.append([title[i].text, price[i].text, description[i].text, rating[i].text]) print(element_list) #closing the driver driver.close()>

Lähtö

Lisätietoja saat osoitteestamme Python Selenium .

Lxml

Pythonin lxml-moduuli on tehokas kirjasto XML- ja HTML-dokumenttien käsittelyyn. Se tarjoaa tehokkaat XML- ja HTML-jäsennysominaisuudet sekä yksinkertaisen ja Pythonic-sovellusliittymän. lxml on laajalti käytössä Python-verkkokaappauksessa sen nopeuden, joustavuuden ja helppokäyttöisyyden vuoksi.

pip install lxml>

Esimerkki

Tässä on yksinkertainen esimerkki, joka havainnollistaa lxml-moduulin käyttöä Python-verkkokaappaukseen:

  1. Tuomme html-moduulin lxml:stä HTTP-pyyntöjen lähettämiseen tarkoitetun pyyntömoduulin kanssa.
  2. Määritämme sen verkkosivuston URL-osoitteen, jonka haluamme kaapata.
  3. Lähetämme sivustolle HTTP GET -pyynnön requests.get()-funktiolla ja noutamme sivun HTML-sisällön.
  4. Jäsennämme HTML-sisällön lxml:n html.fromstring()-funktiolla, joka palauttaa HTML-elementtipuun.
  5. Käytämme XPath-lausekkeita poimimaan tiettyjä elementtejä HTML-puusta. Tässä tapauksessa poimimme kaiken tekstisisällön (ankkuri) elementtejä sivulla.
  6. Toistamme poimittujen linkkien otsikot ja tulostamme ne.
Python
from lxml import html import requests # Define the URL of the website to scrape url = 'https://example.com' # Send an HTTP request to the website and retrieve the HTML content response = requests.get(url) # Parse the HTML content using lxml tree = html.fromstring(response.content) # Extract specific elements from the HTML tree using XPath # For example, let's extract the titles of all the links on the page link_titles = tree.xpath('//a/text()') # Print the extracted link titles for title in link_titles: print(title)>

Lähtö

More information...>

Urllib-moduuli

Pythonin urllib-moduuli on sisäänrakennettu kirjasto, joka tarjoaa toimintoja URL-osoitteiden käsittelyyn. Sen avulla voit olla vuorovaikutuksessa verkkosivujen kanssa hakemalla URL-osoitteita (Uniform Resource Locators), avaamalla ja lukemalla tietoja niiltä ja suorittamalla muita URL-osoitteisiin liittyviä tehtäviä, kuten koodausta ja jäsentämistä. Urllib on paketti, joka kerää useita moduuleja URL-osoitteiden käsittelyä varten, kuten:

  • urllib.request avaamista ja lukemista varten.
  • urllib.parse URL-osoitteiden jäsentämiseen
  • urllib.error esitetyille poikkeuksille
  • urllib.robotparser robot.txt-tiedostojen jäsentämiseen

Jos urllib ei ole ympäristössäsi, asenna se suorittamalla alla oleva koodi.

pip install urllib3>

Esimerkki

Tässä on yksinkertainen esimerkki, joka osoittaa, kuinka urllib-moduulia käytetään verkkosivun sisällön hakemiseen:

  1. Määritämme noudettavan verkkosivun URL-osoitteen.
  2. Käytämme urllib.request.urlopen()-funktiota URL-osoitteen avaamiseen ja vastausobjektin hankkimiseen.
  3. Luemme vastausobjektin sisällön read()-menetelmällä.
  4. Koska sisältö palautetaan tavuina, puramme sen merkkijonoksi käyttämällä decode()-menetelmää utf-8-koodauksella.
  5. Lopuksi tulostamme verkkosivun HTML-sisällön.
Python
import urllib.request # URL of the web page to fetch url = 'https://www.example.com' try: # Open the URL and read its content response = urllib.request.urlopen(url) # Read the content of the response data = response.read() # Decode the data (if it's in bytes) to a string html_content = data.decode('utf-8') # Print the HTML content of the web page print(html_content) except Exception as e: print('Error fetching URL:', e)>

Lähtö

uutt

PyautoGUI

Pythonin pyautogui-moduuli on monialustainen GUI-automaatiokirjasto, jonka avulla kehittäjät voivat ohjata hiirtä ja näppäimistöä tehtävien automatisoimiseksi. Vaikka sitä ei ole erityisesti suunniteltu verkkokaappaukseen, sitä voidaan käyttää yhdessä muiden verkkokaappauskirjastojen, kuten Selenium, kanssa vuorovaikutuksessa sellaisten verkkosivujen kanssa, jotka vaativat käyttäjän syötteitä tai simuloivat ihmisen toimia.

pip3 install pyautogui>

Esimerkki

Tässä esimerkissä pyautoguita käytetään vierittämään ja ottamaan kuvakaappaus hakutulossivusta, joka on saatu kirjoittamalla kysely haun syöttökenttään ja napsauttamalla hakupainiketta Seleenin avulla.

Python
import pyautogui # moves to (519,1060) in 1 sec pyautogui.moveTo(519, 1060, duration = 1) # simulates a click at the present  # mouse position  pyautogui.click() # moves to (1717,352) in 1 sec pyautogui.moveTo(1717, 352, duration = 1) # simulates a click at the present  # mouse position pyautogui.click()>

Lähtö

Ajoittaa

Pythonin aikataulumoduuli on yksinkertainen kirjasto, jonka avulla voit ajoittaa Python-funktiot suoriutumaan tietyin väliajoin. Se on erityisen hyödyllinen verkkokaappauksessa Pythonissa, kun sinun on säännöllisesti raaputtava tietoja verkkosivustolta ennalta määritetyin väliajoin, kuten tunneittain, päivittäin tai viikoittain.

Esimerkki

  • Tuomme tarvittavat moduulit: aikataulun, ajan, pyynnöt ja BeautifulSoupin bs4-paketista.
  • Määrittelemme funktion scrape_data(), joka suorittaa web-kaappaustehtävän. Tämän toiminnon sisällä lähetämme GET-pyynnön verkkosivustolle (korvaa 'https://example.com' sen verkkosivuston URL-osoitteella, jonka haluat kaapata), jäsennämme HTML-sisällön BeautifulSoupin avulla, puramme haluamasi tiedot ja tulostamme sen .
  • Ajoitamme scrape_data()-funktion suoritettavaksi joka tunti käyttämällä schedule.every().hour.do(scrape_data).
  • Siirrymme pääsilmukkaan, joka tarkistaa jatkuvasti odottavat ajoitetut tehtävät komennolla schedule.run_pending() ja nukkuu 1 sekunnin iteraatioiden välillä estääkseen silmukan kuluttamasta liikaa suoritinta.
Python
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)>

Lähtö

Miksi Python3 Web-kaappaukseen?

Pythonin suosio web-kaappauksessa johtuu useista tekijöistä:

  1. Helppokäyttöisyys : Pythonin puhdas ja luettava syntaksi tekee koodin ymmärtämisestä ja kirjoittamisesta helppoa jopa aloittelijoille. Tämä yksinkertaisuus nopeuttaa kehitysprosessia ja vähentää verkon kaavintatehtävien oppimiskäyrää.
  2. Rikas ekosysteemi : Python tarjoaa laajan ekosysteemin kirjastoja ja kehyksiä, jotka on räätälöity verkkojen kaapimiseen. Kirjastot, kuten BeautifulSoup, Scrapy ja Requests, yksinkertaistavat HTML-koodin jäsennysprosessia, mikä tekee tietojen poimimisesta helppoa.
  3. Monipuolisuus : Python on monipuolinen kieli, jota voidaan käyttää monenlaisiin tehtäviin web-kaappauksen lisäksi. Sen joustavuuden ansiosta kehittäjät voivat integroida web-kaappauksen saumattomasti suurempiin projekteihin, kuten data-analyysiin, koneoppimiseen tai verkkokehitykseen.
  4. Yhteisön tuki : Pythonilla on suuri ja aktiivinen kehittäjäyhteisö, jotka osallistuvat sen kirjastoihin ja tarjoavat tukea foorumien, opetusohjelmien ja dokumentaation kautta. Tämä runsas resurssi varmistaa, että kehittäjät voivat saada apua ja ohjeita verkkoraapimiseen liittyvien haasteiden ratkaisemisessa.