logo

Tutorial Python Web Scraping

Web scraping, procesul de extragere a datelor de pe site-uri web, a apărut ca o tehnică puternică de a culege informații din vasta întindere a internetului. În acest tutorial, vom explora diverse biblioteci și module Python utilizate în mod obișnuit pentru web scraping și vom descoperi de ce Python 3 este alegerea preferată pentru această sarcină.

Pachete și instrumente esențiale pentru Python Web Scraping

Cea mai recentă versiune a Piton , oferă un set bogat de instrumente și biblioteci concepute special pentru web scraping, făcând mai ușor ca niciodată recuperarea datelor de pe web în mod eficient și eficient.



Cuprins

Modul de cereri

Biblioteca de solicitări este utilizată pentru a face solicitări HTTP către o anumită adresă URL și returnează răspunsul. Cererile Python oferă funcționalități încorporate pentru gestionarea atât a cererii, cât și a răspunsului.

hărți dactilografiate
pip install requests>

Exemplu: Efectuarea unei cereri

Modulul de solicitări Python are mai multe metode încorporate pentru a face solicitări HTTP către URI-ul specificat folosind solicitări GET, POST, PUT, PATCH sau HEAD. O solicitare HTTP este menită fie să preia date de la un URI specificat, fie să împingă date către un server. Funcționează ca un protocol cerere-răspuns între un client și un server. Aici vom folosi cererea GET. The metoda GET este folosit pentru a prelua informații de la serverul dat folosind un anumit URI. Metoda GET trimite informațiile codificate ale utilizatorului atașate la cererea de pagină.



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

Ieșire

Solicitări Python care fac cerere GET

Pentru mai multe informații, consultați pagina noastră Tutorial solicitări Python .



Biblioteca BeautifulSoup

Beautiful Soup oferă câteva metode simple și expresii Pythonic pentru ghidarea, căutarea și modificarea unui arbore de analiză: un set de instrumente pentru studiul unui document și pentru a elimina ceea ce aveți nevoie. Nu este nevoie de mult cod pentru a documenta o aplicație.

Beautiful Soup convertește automat înregistrările primite în Unicode și formele de ieșire în UTF-8. Nu trebuie să vă gândiți la codificări decât dacă documentul nu definește o codificare, iar Beautiful Soup nu poate prinde una. Apoi trebuie doar să alegeți codificarea originală. Beautiful Soup se află deasupra unor analizoare Python celebre precum LXML și HTML, permițându-vă să încercați diferite strategii de analizare sau viteza de tranzacționare pentru flexibilitate.

pip install beautifulsoup4>

Exemplu

  1. Import de biblioteci: Codul importă biblioteca de solicitări pentru a face cereri HTTP și clasa BeautifulSoup din biblioteca bs4 pentru analiza HTML.
  2. Efectuarea unei cereri GET: Acesta trimite o solicitare GET la „https://www.techcodeview.com
  3. Verificarea codului de stare: Tipărește codul de stare al răspunsului, de obicei 200 pentru succes.
  4. Analizarea HTML-ului : Conținutul HTML al răspunsului este analizat folosind BeautifulSoup și stocat în variabila supă.
  5. Imprimarea codului HTML Prettified: Tipărește versiunea pretified a conținutului HTML analizat pentru lizibilitate și analiză.
Piton
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())>

Ieșire

Python BeautifulSoup Analizând HTML

Găsirea elementelor după clasă

Acum, am dori să extragem câteva date utile din conținutul HTML. Obiectul supă conține toate datele din structura imbricată care ar putea fi extrase programatic. Site-ul web pe care vrem să-l răzuim conține mult text, așa că acum haideți să răzuim tot acel conținut. Mai întâi, să inspectăm pagina web pe care dorim să o răzuim.


În imaginea de mai sus, putem vedea că tot conținutul paginii se află sub div-ul cu clasa de intrare-conținut. Vom folosi clasa find. Această clasă va găsi eticheta dată cu atributul dat. În cazul nostru, va găsi toate div-urile având clasa ca conținut de intrare.

Putem vedea că conținutul paginii se află sub

etichetă. Acum trebuie să găsim toate etichetele p prezente în această clasă. Putem folosiGăsiți toate clasa BeautifulSoup.

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

Ieșire:

găsiți_toate bs4

Pentru mai multe informații, consultați pagina noastră Python BeautifulSoup .

Seleniu

Selenium este un modul popular Python folosit pentru automatizarea browserelor web. Permite dezvoltatorilor să controleze browserele web în mod programatic, permițând sarcini precum scrapingul web, testarea automată și interacțiunea cu aplicațiile web. Selenium acceptă diverse browsere web, inclusiv Chrome, Firefox, Safari și Edge, ceea ce îl face un instrument versatil pentru automatizarea browserului.

Exemplu 1: Pentru Firefox

În acest exemplu specific, direcționăm browserul către pagina de căutare Google cu parametrul de interogare geeksforgeeks. Browserul va încărca această pagină și apoi putem continua să interacționăm cu ea în mod programatic folosind Selenium. Această interacțiune ar putea implica sarcini precum extragerea rezultatelor căutării, clic pe linkuri sau răzuirea conținutului specific din pagină.

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

Ieșire

pentru-firefox

Exemplul 2: pentru Chrome

  1. Importăm modulul webdriver din biblioteca Selenium.
  2. Specificăm calea către executabilul driverului web. Trebuie să descărcați driverul corespunzător pentru browser și să furnizați calea către acesta. În acest exemplu, folosim driverul Chrome.
  3. Creăm o nouă instanță a browserului web folosind webdriver.Chrome() și transmitem calea către executabilul driverului Chrome ca argument.
  4. Navigam la o pagină web apelând metoda get() pe obiectul browser și trecând adresa URL a paginii web.
  5. Extragem informații de pe pagina web folosind diverse metode oferite de Selenium. În acest exemplu, recuperăm titlul paginii folosind atributul title al obiectului browser.
  6. În cele din urmă, închidem browserul folosind metoda quit().
Piton
# 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()>

Ieșire

Pentru mai multe informații, consultați pagina noastră Python Selenium .

Lxml

Modulul lxml din Python este o bibliotecă puternică pentru procesarea documentelor XML și HTML. Oferă capabilități de analiză XML și HTML de înaltă performanță, împreună cu un API simplu și Pythonic. lxml este utilizat pe scară largă în Python web scraping datorită vitezei, flexibilității și ușurinței de utilizare.

pip install lxml>

Exemplu

Iată un exemplu simplu care demonstrează cum să utilizați modulul lxml pentru web scraping Python:

  1. Importăm modulul html din lxml împreună cu modulul de solicitări pentru trimiterea cererilor HTTP.
  2. Definim adresa URL a site-ului web pe care vrem să-l răzuim.
  3. Trimitem o solicitare HTTP GET către site-ul web folosind funcția requests.get() și recuperăm conținutul HTML al paginii.
  4. Analizăm conținutul HTML folosind funcția html.fromstring() din lxml, care returnează un arbore de elemente HTML.
  5. Folosim expresii XPath pentru a extrage anumite elemente din arborele HTML. În acest caz, extragem conținutul text al tuturor elemente (ancoră) pe pagină.
  6. Repetăm ​​titlurile linkurilor extrase și le imprimăm.
Piton
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)>

Ieșire

More information...>

Modulul Urllib

Modulul urllib din Python este o bibliotecă încorporată care oferă funcții pentru lucrul cu adrese URL. Vă permite să interacționați cu paginile web prin preluarea URL-urilor (Locatori uniformi de resurse), deschiderea și citirea datelor din acestea și efectuarea altor sarcini legate de URL-uri, cum ar fi codificarea și analizarea. Urllib este un pachet care colectează mai multe module pentru lucrul cu adrese URL, cum ar fi:

  • urllib.cerere de deschidere și citire.
  • urllib.parse pentru analizarea URL-urilor
  • urllib.error pentru excepțiile ridicate
  • urllib.robotparser pentru analiza fișierelor robot.txt

Dacă urllib nu este prezent în mediul dvs., executați codul de mai jos pentru a-l instala.

pip install urllib3>

Exemplu

Iată un exemplu simplu care demonstrează cum să utilizați modulul urllib pentru a prelua conținutul unei pagini web:

  1. Definim adresa URL a paginii web pe care dorim să o preluăm.
  2. Folosim funcția urllib.request.urlopen() pentru a deschide adresa URL și a obține un obiect de răspuns.
  3. Citim conținutul obiectului răspuns folosind metoda read().
  4. Deoarece conținutul este returnat ca octeți, îl decodăm într-un șir folosind metoda decode() cu codificare „utf-8”.
  5. În cele din urmă, imprimăm conținutul HTML al paginii web.
Piton
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)>

Ieșire

uutt

deschide un fișier cu java

PyautoGUI

Modulul pyautogui din Python este o bibliotecă de automatizare inter-platformă GUI care permite dezvoltatorilor să controleze mouse-ul și tastatura pentru a automatiza sarcinile. Deși nu este conceput special pentru web scraping, poate fi folosit împreună cu alte biblioteci de web scraping, cum ar fi Selenium, pentru a interacționa cu pagini web care necesită intrarea utilizatorului sau pentru a simula acțiuni umane.

pip3 install pyautogui>

Exemplu

În acest exemplu, pyautogui este folosit pentru a efectua derularea și a face o captură de ecran a paginii cu rezultatele căutării, obținută prin introducerea unei interogări în câmpul de introducere a căutării și făcând clic pe butonul de căutare folosind Selenium.

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

Ieșire

Programa

Modulul de planificare din Python este o bibliotecă simplă care vă permite să programați funcțiile Python să ruleze la intervale specificate. Este deosebit de util în web scraping în Python atunci când trebuie să răzuiți în mod regulat date de pe un site web la intervale predefinite, cum ar fi oră, zilnică sau săptămânală.

Exemplu

  • Importăm modulele necesare: program, oră, solicitări și BeautifulSoup din pachetul bs4.
  • Definim o funcție scrape_data() care realizează sarcina de scraping web. În cadrul acestei funcții, trimitem o solicitare GET către un site web (înlocuiește „https://example.com” cu adresa URL a site-ului web pe care vrei să-l răzuiești), analizăm conținutul HTML folosind BeautifulSoup, extragem datele dorite și le imprimăm .
  • Programăm funcția scrape_data() să ruleze în fiecare oră folosind schedule.every().hour.do(scrape_data).
  • Intrăm într-o buclă principală care verifică în mod continuu sarcinile programate în așteptare folosind schedule.run_pending() și dorm timp de 1 secundă între iterații pentru a preveni ca bucla să consume prea mult CPU.
Piton
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)>

Ieșire

De ce Python3 pentru Web Scraping?

Popularitatea lui Python pentru web scraping provine din mai mulți factori:

  1. Ușurință în utilizare : Sintaxa curată și lizibilă a lui Python facilitează înțelegerea și scrierea codului, chiar și pentru începători. Această simplitate accelerează procesul de dezvoltare și reduce curba de învățare pentru sarcinile de web scraping.
  2. Ecosistem bogat : Python se mândrește cu un ecosistem vast de biblioteci și cadre adaptate pentru web scraping. Bibliotecile precum BeautifulSoup, Scrapy și Requests simplifică procesul de analizare a HTML, făcând extragerea datelor o ușoară.
  3. Versatilitate : Python este un limbaj versatil care poate fi folosit pentru o gamă largă de sarcini dincolo de web scraping. Flexibilitatea sa le permite dezvoltatorilor să integreze fără probleme web scraping în proiecte mai mari, cum ar fi analiza datelor, învățarea automată sau dezvoltarea web.
  4. Sprijin comunitar : Python are o comunitate mare și activă de dezvoltatori care contribuie la bibliotecile sale și oferă suport prin forumuri, tutoriale și documentație. Această bogăție de resurse asigură că dezvoltatorii au acces la asistență și îndrumări atunci când abordează provocările web scraping.