Webscraping, het proces waarbij gegevens uit websites worden gehaald, is uitgegroeid tot een krachtige techniek om informatie uit het uitgestrekte internet te verzamelen. In deze zelfstudie verkennen we verschillende Python-bibliotheken en -modules die vaak worden gebruikt voor webscrapen en onderzoeken we waarom Python 3 de voorkeur heeft voor deze taak.
java converteert naar string
Essentiële pakketten en hulpmiddelen voor Python Web Scraping
De nieuwste versie van Python , biedt een uitgebreide reeks tools en bibliotheken die speciaal zijn ontworpen voor webscrapen, waardoor het eenvoudiger dan ooit wordt om gegevens efficiënt en effectief van internet op te halen.
Inhoudsopgave
- Verzoekmodule
- Mooie soepbibliotheek
- Selenium
- Lxml
- Urllib-module
- PyautoGUI
- Schema
- Waarom Python-webscrapen?
Verzoekmodule
De verzoekenbibliotheek wordt gebruikt voor het doen van HTTP-verzoeken aan een specifieke URL en retourneert het antwoord. Python-verzoeken bieden ingebouwde functionaliteiten voor het beheren van zowel het verzoek als het antwoord.
pip install requests>
Voorbeeld: een verzoek indienen
De module Python-verzoeken heeft verschillende ingebouwde methoden om HTTP-verzoeken naar de opgegeven URI te doen met behulp van GET-, POST-, PUT-, PATCH- of HEAD-verzoeken. Een HTTP-verzoek is bedoeld om gegevens op te halen van een opgegeven URI of om gegevens naar een server te pushen. Het werkt als een verzoek-antwoordprotocol tussen een client en een server. Hier zullen we het GET-verzoek gebruiken. De GET-methode wordt gebruikt om informatie op te halen van de gegeven server met behulp van een bepaalde URI. De GET-methode verzendt de gecodeerde gebruikersinformatie die aan het paginaverzoek wordt toegevoegd.
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)> Uitvoer

Voor meer informatie verwijzen wij u naar onze Python-verzoeken-tutorial .
Mooie soepbibliotheek
Beautiful Soup biedt een paar eenvoudige methoden en Python-zinnen voor het begeleiden, zoeken en wijzigen van een ontleedboom: een toolkit voor het bestuderen van een document en het verwijderen van wat je nodig hebt. Er is niet veel code nodig om een applicatie te documenteren.
Beautiful Soup converteert binnenkomende records automatisch naar Unicode en uitgaande formulieren naar UTF-8. U hoeft niet aan coderingen te denken, tenzij het document geen codering definieert en Beautiful Soup er geen kan onderscheppen. Dan hoeft u alleen maar de originele codering te kiezen. Beautiful Soup zit bovenop beroemde Python-parsers zoals LXML en HTML, waardoor je verschillende parseerstrategieën kunt uitproberen of snelheid kunt inruilen voor flexibiliteit.
pip install beautifulsoup4>
Voorbeeld
- Bibliotheken importeren: De code importeert de verzoekenbibliotheek voor het doen van HTTP-verzoeken en de BeautifulSoup-klasse uit de bs4-bibliotheek voor het parseren van HTML.
- Een GET-verzoek indienen: Het stuurt een GET-verzoek naar ‘https://www.techcodeview.com
- Statuscode controleren: Het drukt de statuscode van het antwoord af, meestal 200 voor succes.
- Het parseren van de HTML : De HTML-inhoud van het antwoord wordt geparseerd met BeautifulSoup en opgeslagen in de variabele soup.
- De prettified HTML afdrukken: Het drukt de verbeterde versie van de geparseerde HTML-inhoud af voor leesbaarheid en analyse.
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())> Uitvoer

Elementen zoeken per klasse
Nu willen we enkele nuttige gegevens uit de HTML-inhoud halen. Het soup-object bevat alle gegevens in de geneste structuur die programmatisch kunnen worden geëxtraheerd. De website die we willen schrapen bevat veel tekst, dus laten we nu al die inhoud schrapen. Laten we eerst de webpagina inspecteren die we willen schrapen.
mvc java
In de bovenstaande afbeelding kunnen we zien dat alle inhoud van de pagina zich onder de div bevindt met klasse entry-content. We zullen de klasse find gebruiken. Deze klasse zal de gegeven tag met het opgegeven attribuut vinden. In ons geval zal het alle div's met klasse als invoerinhoud vinden.
We kunnen zien dat de inhoud van de pagina onder de
label. Nu moeten we alle p-tags vinden die in deze klasse aanwezig zijn. Wij kunnen gebruik maken van devind alle klasse van de MooieSoep.
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)> Uitgang:

Java-operator
Voor meer informatie verwijzen wij u naar onze Python Mooie Soep .
Selenium
Selenium is een populaire Python-module die wordt gebruikt voor het automatiseren van webbrowsers. Hiermee kunnen ontwikkelaars webbrowsers programmatisch besturen, waardoor taken als webscraping, geautomatiseerd testen en interactie met webapplicaties mogelijk zijn. Selenium ondersteunt verschillende webbrowsers, waaronder Chrome, Firefox, Safari en Edge, waardoor het een veelzijdige tool is voor browserautomatisering.
Voorbeeld 1: voor Firefox
In dit specifieke voorbeeld sturen we de browser naar de Google-zoekpagina met de zoekopdrachtparameter geeksforgeeks. De browser laadt deze pagina en we kunnen er vervolgens programmatisch mee communiceren met behulp van Selenium. Deze interactie kan taken omvatten zoals het extraheren van zoekresultaten, het klikken op links of het schrappen van specifieke inhoud van de pagina.
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')> Uitvoer

Voorbeeld 2: Voor Chrome
- We importeren de webdrivermodule uit de Selenium-bibliotheek.
- We specificeren het pad naar het uitvoerbare webstuurprogramma. U moet het juiste stuurprogramma voor uw browser downloaden en het pad ernaartoe opgeven. In dit voorbeeld gebruiken we het Chrome-stuurprogramma.
- We maken een nieuw exemplaar van de webbrowser met behulp van webdriver.Chrome() en geven het pad naar het uitvoerbare Chrome-stuurprogramma door als argument.
- We navigeren naar een webpagina door de get() -methode op het browserobject aan te roepen en de URL van de webpagina door te geven.
- We halen informatie uit de webpagina met behulp van verschillende methoden van Selenium. In dit voorbeeld halen we de paginatitel op met behulp van het title-attribuut van het browserobject.
- Ten slotte sluiten we de browser met behulp van de methode 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()>
Uitvoer

Voor meer informatie verwijzen wij u naar onze Python Selenium .
sneltoetsen voor Linux
Lxml
De lxml-module in Python is een krachtige bibliotheek voor het verwerken van XML- en HTML-documenten. Het biedt krachtige XML- en HTML-parseermogelijkheden, samen met een eenvoudige en Pythonische API. lxml wordt veel gebruikt bij Python-webscrapen vanwege de snelheid, flexibiliteit en gebruiksgemak.
pip install lxml>
Voorbeeld
Hier is een eenvoudig voorbeeld dat laat zien hoe u de lxml-module kunt gebruiken voor Python-webscrapen:
- We importeren de html-module uit lxml samen met de verzoekenmodule voor het verzenden van HTTP-verzoeken.
- We definiëren de URL van de website die we willen schrapen.
- We sturen een HTTP GET-verzoek naar de website met behulp van de request.get()-functie en halen de HTML-inhoud van de pagina op.
- We parseren de HTML-inhoud met behulp van de functie html.fromstring() van lxml, die een HTML-elementenboom retourneert.
- We gebruiken XPath-expressies om specifieke elementen uit de HTML-boom te extraheren. In dit geval extraheren we de tekstinhoud van alle (anker)elementen op de pagina.
- We herhalen de geëxtraheerde linktitels en printen ze uit.
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)> Uitvoer
More information...>
Urllib-module
De urllib-module in Python is een ingebouwde bibliotheek die functies biedt voor het werken met URL's. Hiermee kunt u communiceren met webpagina's door URL's (Uniform Resource Locators) op te halen, gegevens ervan te openen en te lezen, en andere URL-gerelateerde taken uit te voeren, zoals coderen en parseren. Urllib is een pakket dat verschillende modules verzamelt voor het werken met URL's, zoals:
- urllib.request voor openen en lezen.
- urllib.parse voor het parseren van URL's
- urllib.error voor de opgetreden uitzonderingen
- urllib.robotparser voor het parseren van robot.txt-bestanden
Als urllib niet aanwezig is in uw omgeving, voert u de onderstaande code uit om deze te installeren.
pip install urllib3>
Voorbeeld
Hier is een eenvoudig voorbeeld dat laat zien hoe u de urllib-module kunt gebruiken om de inhoud van een webpagina op te halen:
- We definiëren de URL van de webpagina die we willen ophalen.
- We gebruiken de functie urllib.request.urlopen() om de URL te openen en een responsobject te verkrijgen.
- We lezen de inhoud van het responsobject met behulp van de read() -methode.
- Omdat de inhoud wordt geretourneerd als bytes, decoderen we deze naar een string met behulp van de decode()-methode met ‘utf-8’-codering.
- Ten slotte drukken we de HTML-inhoud van de webpagina af.
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)> Uitvoer
nieuwe lijnpython

PyautoGUI
De pyautogui-module in Python is een platformonafhankelijke GUI-automatiseringsbibliotheek waarmee ontwikkelaars de muis en het toetsenbord kunnen besturen om taken te automatiseren. Hoewel het niet specifiek is ontworpen voor webscraping, kan het worden gebruikt in combinatie met andere webscraping-bibliotheken zoals Selenium om te communiceren met webpagina's die gebruikersinvoer vereisen of menselijke acties te simuleren.
pip3 install pyautogui>
Voorbeeld
In dit voorbeeld wordt pyautogui gebruikt om te scrollen en een screenshot te maken van de pagina met zoekresultaten die wordt verkregen door een zoekopdracht in het zoekinvoerveld te typen en op de zoekknop te klikken met behulp van 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()>
Uitvoer

Schema
De planningsmodule in Python is een eenvoudige bibliotheek waarmee u Python-functies kunt plannen zodat ze met gespecificeerde intervallen worden uitgevoerd. Het is vooral handig bij webscrapen in Python wanneer u regelmatig gegevens van een website moet schrapen met vooraf gedefinieerde intervallen, zoals elk uur, dagelijks of wekelijks.
Voorbeeld
- De benodigde modules: rooster, tijd, aanvragen en BeautifulSoup importeren wij uit het bs4 pakket.
- We definiëren een functie scrape_data() die de webscrapingaak uitvoert. Binnen deze functie sturen we een GET-verzoek naar een website (vervang 'https://example.com' door de URL van de website die u wilt scrapen), parseren de HTML-inhoud met BeautifulSoup, extraheren de gewenste gegevens en drukken deze af .
- We plannen dat de functie scrape_data() elk uur wordt uitgevoerd met behulp van Schedule.every().hour.do(scrape_data).
- We gaan een hoofdlus binnen die continu controleert op geplande taken die in behandeling zijn met behulp van Schedule.run_pending() en slaapt gedurende 1 seconde tussen iteraties om te voorkomen dat de lus te veel CPU verbruikt.
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)> Uitvoer

Waarom Python3 voor webscrapen?
De populariteit van Python voor webscraping komt voort uit verschillende factoren:
- Makkelijk te gebruiken : De duidelijke en leesbare syntaxis van Python maakt het gemakkelijk om code te begrijpen en te schrijven, zelfs voor beginners. Deze eenvoud versnelt het ontwikkelingsproces en vermindert de leercurve voor webscraping-taken.
- Rijk ecosysteem : Python beschikt over een enorm ecosysteem van bibliotheken en raamwerken die op maat zijn gemaakt voor webscrapen. Bibliotheken zoals BeautifulSoup, Scrapy en Requests vereenvoudigen het proces van het parseren van HTML, waardoor gegevensextractie een fluitje van een cent wordt.
- Veelzijdigheid : Python is een veelzijdige taal die kan worden gebruikt voor een breed scala aan taken die verder gaan dan webscrapen. Dankzij de flexibiliteit kunnen ontwikkelaars webscraping naadloos integreren in grotere projecten, zoals data-analyse, machine learning of webontwikkeling.
- Maatschappelijke hulp : Python heeft een grote en actieve gemeenschap van ontwikkelaars die bijdragen aan de bibliotheken en ondersteuning bieden via forums, tutorials en documentatie. Deze schat aan bronnen zorgt ervoor dat ontwikkelaars toegang hebben tot hulp en begeleiding bij het aanpakken van webscraping-uitdagingen.