Web scraping, proces získávání dat z webových stránek, se ukázal jako výkonná technika pro shromažďování informací z obrovského prostoru internetu. V tomto tutoriálu prozkoumáme různé Python knihovny a moduly běžně používané pro web scraping a ponoříme se do toho, proč je Python 3 preferovanou volbou pro tento úkol.
Základní balíčky a nástroje pro Python Web Scraping
Nejnovější verze Krajta , nabízí bohatou sadu nástrojů a knihoven speciálně navržených pro web scraping, takže získávání dat z webu efektivně a efektivně je snazší než kdy dříve.
stringformat
Obsah
- Modul požadavků
- Krásná polévková knihovna
- Selen
- Lxml
- Modul Urllib
- PyautoGUI
- Plán
- Proč Python Web Scraping?
Modul požadavků
Knihovna požadavků se používá k vytváření požadavků HTTP na konkrétní URL a vrací odpověď. Požadavky Pythonu poskytují vestavěné funkce pro správu požadavku i odpovědi.
pip install requests>
Příklad: Podání žádosti
Modul požadavků Pythonu má několik vestavěných metod pro vytváření požadavků HTTP na zadané URI pomocí požadavků GET, POST, PUT, PATCH nebo HEAD. Požadavek HTTP je určen k načtení dat ze zadaného URI nebo k odeslání dat na server. Funguje jako protokol žádost-odpověď mezi klientem a serverem. Zde budeme používat požadavek GET. The metoda GET se používá k získávání informací z daného serveru pomocí daného URI. Metoda GET odesílá zakódované informace o uživateli připojené k požadavku na stránku.
Krajta
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ýstup

Další informace naleznete v naší Výukový program požadavků Pythonu .
Krásná polévková knihovna
Beautiful Soup poskytuje několik jednoduchých metod a frází Pythonic pro vedení, vyhledávání a změnu stromu analýzy: sada nástrojů pro studium dokumentu a odstranění toho, co potřebujete. Dokumentace aplikace nevyžaduje mnoho kódu.
Beautiful Soup automaticky převádí příchozí záznamy do Unicode a odchozí formuláře do UTF-8. Nemusíte myslet na kódování, pokud dokument nedefinuje kódování a Beautiful Soup je nedokáže zachytit. Pak už jen stačí zvolit původní kódování. Beautiful Soup sedí na vrcholu slavných Pythonových analyzátorů, jako jsou LXML a HTML, což vám umožňuje vyzkoušet různé strategie analýzy nebo obchodovat s rychlostí pro flexibilitu.
pip install beautifulsoup4>
Příklad
- Import knihoven: Kód importuje knihovnu požadavků pro vytváření požadavků HTTP a třídu BeautifulSoup z knihovny bs4 pro analýzu HTML.
- Podání žádosti GET: Odešle požadavek GET na „https://www.techcodeview.com
- Kontrola stavového kódu: Vytiskne stavový kód odpovědi, obvykle 200 pro úspěch.
- Analýza HTML : Obsah HTML odpovědi je analyzován pomocí BeautifulSoup a uložen do proměnné polévka.
- Tisk Prettified HTML: Vytiskne pretified verzi analyzovaného obsahu HTML pro čitelnost a analýzu.
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ýstup

Hledání prvků podle třídy
Nyní bychom rádi extrahovali některá užitečná data z obsahu HTML. Objekt soup obsahuje všechna data ve vnořené struktuře, která by mohla být programově extrahována. Web, který chceme seškrábat, obsahuje hodně textu, takže nyní celý tento obsah seškrábeme. Nejprve se podívejme na webovou stránku, kterou chceme seškrábat.
Na obrázku výše můžeme vidět, že veškerý obsah stránky je pod div s class entry-content. Použijeme třídu find. Tato třída najde danou značku s daným atributem. V našem případě najde všechny prvky div, které mají třídu jako vstupní obsah.
co dělá počítač rychlým
Vidíme, že obsah stránky je pod
štítek. Nyní musíme najít všechny p tagy přítomné v této třídě. Můžeme použítnajít_vše třídy Krásné polévky.
Krajta 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ýstup:

Další informace naleznete v naší Krásná polévka Python .
Selen
Selenium je populární modul Pythonu používaný pro automatizaci webových prohlížečů. Umožňuje vývojářům ovládat webové prohlížeče programově, což umožňuje úkoly, jako je web scraping, automatizované testování a interakce s webovou aplikací. Selenium podporuje různé webové prohlížeče, včetně Chrome, Firefox, Safari a Edge, což z něj činí všestranný nástroj pro automatizaci prohlížeče.
Příklad 1: Pro Firefox
V tomto konkrétním příkladu přesměrujeme prohlížeč na stránku vyhledávání Google s parametrem dotazu geeksforgeeks. Prohlížeč načte tuto stránku a my s ní pak můžeme přistoupit k programové interakci pomocí Selenium. Tato interakce může zahrnovat úkoly, jako je extrahování výsledků vyhledávání, klikání na odkazy nebo stahování konkrétního obsahu ze stránky.
programování cobolKrajta
# 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ýstup

Příklad 2: Pro Chrome
- Modul webdriver importujeme z knihovny Selenium.
- Zadáme cestu ke spustitelnému souboru webového ovladače. Musíte si stáhnout příslušný ovladač pro váš prohlížeč a zadat k němu cestu. V tomto příkladu používáme ovladač Chrome.
- Vytvoříme novou instanci webového prohlížeče pomocí webdriver.Chrome() a jako argument předáme cestu ke spustitelnému souboru ovladače Chrome.
- Na webovou stránku přejdeme voláním metody get() v objektu prohlížeče a předáním adresy URL webové stránky.
- Získáváme informace z webové stránky pomocí různých metod poskytovaných společností Selenium. V tomto příkladu získáme název stránky pomocí atributu title objektu prohlížeče.
- Nakonec zavřeme prohlížeč pomocí metody quit().
# 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ýstup

Další informace naleznete v naší Python Selenium .
bash if podmínka
Lxml
Modul lxml v Pythonu je výkonná knihovna pro zpracování dokumentů XML a HTML. Poskytuje vysoce výkonné možnosti analýzy XML a HTML spolu s jednoduchým a Pythonic API. lxml je široce používán v Python web scraping kvůli jeho rychlosti, flexibilitě a snadnému použití.
pip install lxml>
Příklad
Zde je jednoduchý příklad demonstrující, jak používat modul lxml pro škrábání webu v Pythonu:
- html modul importujeme z lxml spolu s modulem request pro odesílání HTTP požadavků.
- Definujeme URL webové stránky, kterou chceme seškrábat.
- Odešleme na web požadavek HTTP GET pomocí funkce request.get() a načteme obsah HTML stránky.
- Obsah HTML analyzujeme pomocí funkce html.fromstring() z lxml, která vrací strom prvků HTML.
- K extrahování konkrétních prvků ze stromu HTML používáme výrazy XPath. V tomto případě extrahujeme textový obsah všech (ukotvení) prvků na stránce.
- Iterujeme extrahované názvy odkazů a vytiskneme je.
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ýstup
More information...>
Modul Urllib
Modul urllib v Pythonu je vestavěná knihovna, která poskytuje funkce pro práci s URL. Umožňuje vám komunikovat s webovými stránkami načítáním adres URL (Uniform Resource Locator), otevíráním a čtením dat z nich a prováděním dalších úloh souvisejících s URL, jako je kódování a analýza. Urllib je balíček, který shromažďuje několik modulů pro práci s adresami URL, například:
- urllib.request pro otevření a čtení.
- urllib.parse pro analýzu adres URL
- urllib.error pro uvedené výjimky
- urllib.robotparser pro analýzu souborů robot.txt
Pokud urllib není ve vašem prostředí přítomen, spusťte níže uvedený kód a nainstalujte jej.
pip install urllib3>
Příklad
Zde je jednoduchý příklad demonstrující, jak použít modul urllib k načtení obsahu webové stránky:
- Definujeme URL webové stránky, kterou chceme načíst.
- K otevření URL a získání objektu odpovědi používáme funkci urllib.request.urlopen().
- Obsah objektu odpovědi čteme pomocí metody read().
- Protože se obsah vrací jako bajty, dekódujeme jej na řetězec pomocí metody decode() s kódováním ‚utf-8‘.
- Nakonec vytiskneme HTML obsah webové stránky.
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ýstup

PyautoGUI
Modul pyautogui v Pythonu je multiplatformní knihovna GUI pro automatizaci, která umožňuje vývojářům ovládat myš a klávesnici pro automatizaci úloh. I když není speciálně navržen pro web scraping, může být použit ve spojení s jinými web scraping knihovnami, jako je Selenium, k interakci s webovými stránkami, které vyžadují vstup uživatele nebo simulaci lidských akcí.
pip3 install pyautogui>
Příklad
V tomto příkladu se pyautogui používá k posouvání a pořízení snímku obrazovky stránky s výsledky vyhledávání, který byl získán zadáním dotazu do vstupního pole vyhledávání a kliknutím na tlačítko vyhledávání pomocí Selenium.
čtvrtletí v roceKrajta
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ýstup

Plán
Modul plánování v Pythonu je jednoduchá knihovna, která vám umožňuje naplánovat spouštění funkcí Pythonu v určených intervalech. Je to užitečné zejména při škrábání webu v Pythonu, když potřebujete pravidelně odstraňovat data z webu v předem definovaných intervalech, jako jsou hodinové, denní nebo týdenní.
Příklad
- Importujeme potřebné moduly: rozvrh, čas, požadavky a BeautifulSoup z balíčku bs4.
- Definujeme funkci scrape_data(), která provádí úlohu seškrabování webu. Uvnitř této funkce odešleme požadavek GET na webovou stránku (nahraďte „https://example.com“ adresou URL webu, který chcete seškrábat), analyzujeme obsah HTML pomocí BeautifulSoup, extrahujeme požadovaná data a vytiskneme je. .
- Spuštění funkce scrape_data() naplánujeme každou hodinu pomocí schedule.every().hour.do(scrape_data).
- Vstupujeme do hlavní smyčky, která nepřetržitě kontroluje nevyřízené naplánované úlohy pomocí schedule.run_pending() a mezi iteracemi spí na 1 sekundu, aby smyčka nespotřebovala příliš mnoho CPU.
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)> Výstup

Proč Python3 pro Web Scraping?
Popularita Pythonu pro web scraping pramení z několika faktorů:
- Snadnost použití : Čistá a čitelná syntaxe Pythonu usnadňuje pochopení a psaní kódu i pro začátečníky. Tato jednoduchost urychluje proces vývoje a zkracuje křivku učení pro úlohy seškrabávání webu.
- Bohatý ekosystém : Python se může pochlubit rozsáhlým ekosystémem knihoven a frameworků přizpůsobených pro web scraping. Knihovny jako BeautifulSoup, Scrapy a Requests zjednodušují proces analýzy HTML, takže extrakce dat je hračka.
- Všestrannost : Python je všestranný jazyk, který lze použít pro širokou škálu úkolů nad rámec web scraping. Jeho flexibilita umožňuje vývojářům bezproblémově integrovat web scraping do větších projektů, jako je analýza dat, strojové učení nebo vývoj webu.
- Podpora komunity : Python má velkou a aktivní komunitu vývojářů, kteří přispívají do jeho knihoven a poskytují podporu prostřednictvím fór, výukových programů a dokumentace. Toto bohatství zdrojů zajišťuje, že vývojáři mají přístup k pomoci a pokynům při řešení problémů se škrabáním webu.