logo

Výukový program Python Web Scraping

Web scraping, proces získavania údajov z webových stránok, sa ukázal ako výkonná technika na zhromažďovanie informácií z obrovského priestoru internetu. V tomto návode preskúmame rôzne knižnice a moduly Pythonu bežne používané na zoškrabovanie webu a ponoríme sa do toho, prečo je Python 3 preferovanou voľbou pre túto úlohu.

Základné balíčky a nástroje pre Python Web Scraping

Najnovšia verzia Python , ponúka bohatú sadu nástrojov a knižníc špeciálne navrhnutých na zoškrabovanie webu, vďaka čomu je získavanie údajov z webu efektívne a efektívne jednoduchšie ako kedykoľvek predtým.



Obsah

Modul žiadostí

Knižnica požiadaviek sa používa na vytváranie požiadaviek HTTP na konkrétnu adresu URL a vracia odpoveď. Žiadosti Pythonu poskytujú vstavané funkcie na správu požiadavky aj odpovede.

pip install requests>

Príklad: Podanie žiadosti

Modul požiadaviek Pythonu má niekoľko vstavaných metód na vytváranie požiadaviek HTTP na špecifikované URI pomocou požiadaviek GET, POST, PUT, PATCH alebo HEAD. Požiadavka HTTP je určená na získanie údajov zo zadaného URI alebo na odoslanie údajov na server. Funguje ako protokol žiadosť-odpoveď medzi klientom a serverom. Tu budeme používať požiadavku GET. The GET metóda sa používa na získanie informácií z daného servera pomocou daného URI. Metóda GET odosiela zakódované informácie o používateľovi pripojené k žiadosti o stránku.



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

Výkon

Žiadosti Pythonu vytvárajúce požiadavku GET

Viac informácií nájdete v našom Návod na požiadavky Pythonu .



Krásna polievková knižnica

Beautiful Soup poskytuje niekoľko jednoduchých metód a fráz v jazyku Pythonic na vedenie, vyhľadávanie a zmenu stromu analýzy: súprava nástrojov na štúdium dokumentu a odstránenie toho, čo potrebujete. Dokumentácia aplikácie nevyžaduje veľa kódu.

Beautiful Soup automaticky konvertuje prichádzajúce záznamy na Unicode a odchádzajúce formuláre na UTF-8. Nemusíte myslieť na kódovanie, pokiaľ dokument nedefinuje kódovanie a Beautiful Soup ho nedokáže zachytiť. Potom už len stačí zvoliť pôvodné kódovanie. Krásna polievka stojí na vrchole známych analyzátorov jazyka Python, ako sú LXML a HTML, čo vám umožňuje vyskúšať rôzne stratégie analýzy alebo obchodovať s rýchlosťou pre flexibilitu.

pip install beautifulsoup4>

Príklad

  1. Import knižníc: Kód importuje knižnicu požiadaviek na vytváranie požiadaviek HTTP a triedu BeautifulSoup z knižnice bs4 na analýzu HTML.
  2. Podanie žiadosti GET: Odošle požiadavku GET na „https://www.techcodeview.com
  3. Kontroluje sa stavový kód: Vytlačí stavový kód odpovede, zvyčajne 200 pre úspech.
  4. Analýza kódu HTML : Obsah HTML odpovede sa analyzuje pomocou BeautifulSoup a uloží sa do premennej polievka.
  5. Tlač Prettified HTML: Vytlačí upravenú verziu analyzovaného obsahu HTML pre čitateľnosť a analýzu.
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())>

Výkon

Python BeautifulSoup analyzuje HTML

Hľadanie prvkov podľa triedy

Teraz by sme chceli extrahovať niektoré užitočné údaje z obsahu HTML. Objekt polievka obsahuje všetky údaje vo vnorenej štruktúre, ktoré je možné programovo extrahovať. Web, ktorý chceme zoškrabať, obsahuje veľa textu, takže teraz poďme zoškrabať všetok tento obsah. Najprv sa pozrime na webovú stránku, ktorú chceme zoškrabať.


Na obrázku vyššie môžeme vidieť, že všetok obsah stránky je pod prvkom div so vstupom do triedy. Použijeme triedu find. Táto trieda nájde daný tag s daným atribútom. V našom prípade nájde všetky prvky div, ktoré majú triedu ako vstupný obsah.

Vidíme, že obsah stránky je pod

tag. Teraz musíme nájsť všetky p tagy prítomné v tejto triede. Môžeme použiťnájsť_všetko triedy Krásnej polievky.

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

Výkon:

prečiarknutie markdown

find_all bs4

Viac informácií nájdete v našom Python BeautifulSoup .

Selén

Selenium je populárny modul Pythonu používaný na automatizáciu webových prehliadačov. Umožňuje vývojárom ovládať webové prehliadače programovo, čo umožňuje úlohy, ako je zoškrabovanie webu, automatizované testovanie a interakcia s webovými aplikáciami. Selenium podporuje rôzne webové prehliadače vrátane Chrome, Firefox, Safari a Edge, čo z neho robí všestranný nástroj na automatizáciu prehliadačov.

Príklad 1: Pre Firefox

V tomto konkrétnom príklade smerujeme prehliadač na stránku vyhľadávania Google s parametrom dopytu geeksforgeeks. Prehliadač načíta túto stránku a potom s ňou môžeme pristúpiť k programovej interakcii pomocou Selenium. Táto interakcia môže zahŕňať úlohy, ako je extrahovanie výsledkov vyhľadávania, klikanie na odkazy alebo zoškrabovanie konkrétneho obsahu zo stránky.

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

Výkon

pre Firefox

Príklad 2: Pre Chrome

  1. Modul webdriver importujeme z knižnice Selenium.
  2. Zadáme cestu k spustiteľnému súboru webového ovládača. Musíte si stiahnuť príslušný ovládač pre váš prehliadač a poskytnúť k nemu cestu. V tomto príklade používame ovládač Chrome.
  3. Vytvoríme novú inštanciu webového prehliadača pomocou webdriver.Chrome() a ako argument odošleme cestu k spustiteľnému súboru ovládača Chrome.
  4. Na webovú stránku prejdeme volaním metódy get() na objekte prehliadača a odovzdaním adresy URL webovej stránky.
  5. Informácie z webovej stránky získavame pomocou rôznych metód poskytovaných spoločnosťou Selenium. V tomto príklade získame názov stránky pomocou atribútu title objektu prehliadača.
  6. Nakoniec prehliadač zatvoríme pomocou metódy quit().
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()>

Výkon

Viac informácií nájdete v našom Python Selenium .

Lxml

Modul lxml v Pythone je výkonná knižnica na spracovanie dokumentov XML a HTML. Poskytuje vysokovýkonné možnosti analýzy XML a HTML spolu s jednoduchým a Pythonic API. lxml je široko používaný pri zoškrabovaní webu v Pythone kvôli jeho rýchlosti, flexibilite a jednoduchosti použitia.

strsep c
pip install lxml>

Príklad

Tu je jednoduchý príklad, ktorý ukazuje, ako používať modul lxml na zoškrabovanie webu v Pythone:

  1. html modul importujeme z lxml spolu s modulom požiadaviek na odosielanie HTTP požiadaviek.
  2. Definujeme URL webovej stránky, ktorú chceme zoškrabať.
  3. Na webovú stránku odošleme požiadavku HTTP GET pomocou funkcie request.get() a načítame HTML obsah stránky.
  4. Obsah HTML analyzujeme pomocou funkcie html.fromstring() z lxml, ktorá vracia strom prvkov HTML.
  5. Na extrahovanie konkrétnych prvkov zo stromu HTML používame výrazy XPath. V tomto prípade extrahujeme textový obsah všetkých (kotvové) prvky na stránke.
  6. Opakujeme extrahované názvy odkazov a vytlačíme ich.
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)>

Výkon

More information...>

Modul Urllib

Modul urllib v Pythone je vstavaná knižnica, ktorá poskytuje funkcie pre prácu s URL. Umožňuje vám interagovať s webovými stránkami načítaním adries URL (Uniform Resource Locator), otváraním a čítaním údajov z nich a vykonávaním ďalších úloh súvisiacich s webovými adresami, ako je kódovanie a analýza. Urllib je balík, ktorý zhromažďuje niekoľko modulov na prácu s adresami URL, ako napríklad:

  • urllib.požiadavka na otvorenie a prečítanie.
  • urllib.parse na analýzu adries URL
  • urllib.error pre uvedené výnimky
  • urllib.robotparser na analýzu súborov robot.txt

Ak urllib nie je prítomný vo vašom prostredí, nainštalujte ho spustením kódu nižšie.

pip install urllib3>

Príklad

Tu je jednoduchý príklad, ktorý ukazuje, ako použiť modul urllib na načítanie obsahu webovej stránky:

  1. Definujeme URL webovej stránky, ktorú chceme načítať.
  2. Na otvorenie adresy URL a získanie objektu odpovede používame funkciu urllib.request.urlopen().
  3. Obsah objektu odpovede čítame pomocou metódy read().
  4. Keďže obsah sa vracia ako bajty, dekódujeme ho na reťazec pomocou metódy decode() s kódovaním ‘utf-8’.
  5. Nakoniec vytlačíme HTML obsah webovej stránky.
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)>

Výkon

uutt

PyautoGUI

Modul pyautogui v Pythone je multiplatformová automatizačná knižnica GUI, ktorá umožňuje vývojárom ovládať myš a klávesnicu na automatizáciu úloh. Aj keď nie je špeciálne navrhnutý na zoškrabovanie webu, možno ho použiť v spojení s inými knižnicami zoškrabovania webu, ako je Selenium, na interakciu s webovými stránkami, ktoré vyžadujú vstup používateľa alebo simuláciu ľudských akcií.

pip3 install pyautogui>

Príklad

V tomto príklade sa pyautogui používa na rolovanie a vytvorenie snímky obrazovky s výsledkami vyhľadávania získanej zadaním dopytu do vstupného poľa vyhľadávania a kliknutím na tlačidlo vyhľadávania pomocou Selenium.

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

Výkon

Rozvrh

Modul plánovania v Pythone je jednoduchá knižnica, ktorá vám umožňuje naplánovať spustenie funkcií Pythonu v určených intervaloch. Je to užitočné najmä pri zoškrabovaní webu v Pythone, keď potrebujete pravidelne zoškrabovať údaje z webovej lokality vo vopred definovaných intervaloch, ako sú hodinové, denné alebo týždenné.

Príklad

  • Importujeme potrebné moduly: plán, čas, požiadavky a BeautifulSoup z balíka bs4.
  • Definujeme funkciu scrape_data(), ktorá vykonáva úlohu zoškrabovania webu. V rámci tejto funkcie odošleme požiadavku GET na webovú stránku (nahraďte „https://example.com“ adresou URL webovej stránky, ktorú chcete zoškrabať), analyzujeme obsah HTML pomocou BeautifulSoup, extrahujeme požadované údaje a vytlačíme ich. .
  • Spustenie funkcie scrape_data() naplánujeme každú hodinu pomocou schedule.every().hour.do(scrape_data).
  • Vstupujeme do hlavnej slučky, ktorá nepretržite kontroluje čakajúce naplánované úlohy pomocou schedule.run_pending() a medzi iteráciami spí na 1 sekundu, aby slučka nespotrebovala príliš veľa CPU.
Python
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)>

Výkon

Prečo Python3 pre sťahovanie webu?

Popularita Pythonu pre zoškrabovanie webu pramení z niekoľkých faktorov:

  1. Jednoduchosť použitia : Čistá a čitateľná syntax jazyka Python uľahčuje pochopenie a písanie kódu aj pre začiatočníkov. Táto jednoduchosť urýchľuje proces vývoja a skracuje krivku učenia pre úlohy zoškrabovania webu.
  2. Bohatý ekosystém : Python sa môže pochváliť rozsiahlym ekosystémom knižníc a rámcov prispôsobených na zoškrabovanie webu. Knižnice ako BeautifulSoup, Scrapy a Requests zjednodušujú proces analýzy HTML, vďaka čomu je extrakcia údajov hračkou.
  3. Všestrannosť : Python je všestranný jazyk, ktorý možno použiť na širokú škálu úloh, ktoré presahujú rámec zoškrabovania webu. Jeho flexibilita umožňuje vývojárom bezproblémovo integrovať zoškrabovanie webu do väčších projektov, ako je analýza údajov, strojové učenie alebo vývoj webu.
  4. Podpora komunity : Python má veľkú a aktívnu komunitu vývojárov, ktorí prispievajú do jeho knižníc a poskytujú podporu prostredníctvom fór, návodov a dokumentácie. Toto množstvo zdrojov zaisťuje, že vývojári majú prístup k pomoci a poradenstvu pri riešení problémov súvisiacich so zoškrabávaním webu.