Python-Module für Web Scraping
In diesem Kapitel lernen wir verschiedene Python-Module kennen, die wir für das Web-Scraping verwenden können.
Python-Entwicklungsumgebungen mit virtualenv
Virtualenv ist ein Tool zum Erstellen isolierter Python-Umgebungen. Mithilfe von virtualenv können wir einen Ordner erstellen, der alle erforderlichen ausführbaren Dateien enthält, um die für unser Python-Projekt erforderlichen Pakete zu verwenden. Außerdem können wir Python-Module hinzufügen und ändern, ohne Zugriff auf die globale Installation zu haben.
Sie können den folgenden Befehl zur Installation verwenden virtualenv - -
(base) D:\ProgramData>pip install virtualenv
Collecting virtualenv
Downloading
https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c3
5d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl
(1.9MB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 1.9MB 86kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0
Jetzt müssen wir ein Verzeichnis erstellen, das das Projekt mit Hilfe des folgenden Befehls darstellt:
(base) D:\ProgramData>mkdir webscrap
Geben Sie nun mit Hilfe des folgenden Befehls in dieses Verzeichnis ein:
(base) D:\ProgramData>cd webscrap
Jetzt müssen wir den Ordner der virtuellen Umgebung unserer Wahl wie folgt initialisieren:
(base) D:\ProgramData\webscrap>virtualenv websc
Using base prefix 'd:\\programdata'
New python executable in D:\ProgramData\webscrap\websc\Scripts\python.exe
Installing setuptools, pip, wheel...done.
Aktivieren Sie nun die virtuelle Umgebung mit dem unten angegebenen Befehl. Nach erfolgreicher Aktivierung sehen Sie den Namen auf der linken Seite in Klammern.
(base) D:\ProgramData\webscrap>websc\scripts\activate
Wir können jedes Modul in dieser Umgebung wie folgt installieren:
(websc) (base) D:\ProgramData\webscrap>pip install requests
Collecting requests
Downloading
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (9
1kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 148kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Downloading
https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca
55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133
kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 369kB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading
https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee6364
4d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl
(147kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 153kB 527kB/s
Collecting urllib3<1.24,>=1.21.1 (from requests)
Downloading
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133k
B)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 517kB/s
Collecting idna<2.8,>=2.5 (from requests)
Downloading
https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746
a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 61kB 339kB/s
Installing collected packages: chardet, certifi, urllib3, idna, requests
Successfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1
urllib3-1.23
Zum Deaktivieren der virtuellen Umgebung können wir den folgenden Befehl verwenden:
(websc) (base) D:\ProgramData\webscrap>deactivate
(base) D:\ProgramData\webscrap>
Sie können sehen, dass (websc) deaktiviert wurde.
Python-Module für Web Scraping
Beim Web-Scraping wird ein Agent erstellt, der nützliche Informationen aus dem Web automatisch extrahieren, analysieren, herunterladen und organisieren kann. Mit anderen Worten, anstatt die Daten von Websites manuell zu speichern, lädt und extrahiert die Web-Scraping-Software automatisch Daten von mehreren Websites gemäß unserer Anforderung.
In diesem Abschnitt werden nützliche Python-Bibliotheken für das Web-Scraping erläutert.
Anfragen
Es ist eine einfache Python-Web-Scraping-Bibliothek. Es ist eine effiziente HTTP-Bibliothek, die für den Zugriff auf Webseiten verwendet wird. Mit der Hilfe vonRequestskönnen wir den rohen HTML-Code von Webseiten abrufen, der dann zum Abrufen der Daten analysiert werden kann. Vor GebrauchrequestsLassen Sie uns die Installation verstehen.
Anfragen installieren
Wir können es entweder in unserer virtuellen Umgebung oder in der globalen Installation installieren. Mit der Hilfe vonpip Befehl können wir es einfach wie folgt installieren -
(base) D:\ProgramData> pip install requests
Collecting requests
Using cached
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl
Requirement already satisfied: idna<2.8,>=2.5 in d:\programdata\lib\sitepackages
(from requests) (2.6)
Requirement already satisfied: urllib3<1.24,>=1.21.1 in
d:\programdata\lib\site-packages (from requests) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in d:\programdata\lib\sitepackages
(from requests) (2018.1.18)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in
d:\programdata\lib\site-packages (from requests) (3.0.4)
Installing collected packages: requests
Successfully installed requests-2.19.1
Beispiel
In diesem Beispiel stellen wir eine GET HTTP-Anforderung für eine Webseite. Dazu müssen wir zuerst die Anforderungsbibliothek wie folgt importieren:
In [1]: import requests
In dieser folgenden Codezeile verwenden wir Anforderungen, um GET-HTTP-Anforderungen für die URL zu erstellen: https://authoraditiagarwal.com/ durch eine GET-Anfrage.
In [2]: r = requests.get('https://authoraditiagarwal.com/')
Jetzt können wir den Inhalt mit abrufen .text Eigenschaft wie folgt -
In [5]: r.text[:200]
Beachten Sie, dass wir in der folgenden Ausgabe die ersten 200 Zeichen erhalten haben.
Out[5]: '<!DOCTYPE html>\n<html lang="en-US"\n\titemscope
\n\titemtype="http://schema.org/WebSite" \n\tprefix="og: http://ogp.me/ns#"
>\n<head>\n\t<meta charset
="UTF-8" />\n\t<meta http-equiv="X-UA-Compatible" content="IE'
Urllib3
Es ist eine weitere Python-Bibliothek, mit der Daten von URLs abgerufen werden können, die denen ähneln requestsBibliothek. Weitere Informationen hierzu finden Sie in der technischen Dokumentation unter https://urllib3.readthedocs.io/en/latest/.
Urllib3 installieren
Verwendung der pip Befehl können wir installieren urllib3 entweder in unserer virtuellen Umgebung oder in der globalen Installation.
(base) D:\ProgramData>pip install urllib3
Collecting urllib3
Using cached
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl
Installing collected packages: urllib3
Successfully installed urllib3-1.23
Beispiel: Scraping mit Urllib3 und BeautifulSoup
Im folgenden Beispiel wird die Webseite mithilfe von abgekratzt Urllib3 und BeautifulSoup. Wir benutzenUrllib3an der Stelle der Anforderungsbibliothek zum Abrufen der Rohdaten (HTML) von der Webseite. Dann verwenden wirBeautifulSoup zum Parsen dieser HTML-Daten.
import urllib3
from bs4 import BeautifulSoup
http = urllib3.PoolManager()
r = http.request('GET', 'https://authoraditiagarwal.com')
soup = BeautifulSoup(r.data, 'lxml')
print (soup.title)
print (soup.title.text)
Dies ist die Ausgabe, die Sie beobachten werden, wenn Sie diesen Code ausführen -
<title>Learn and Grow with Aditi Agarwal</title>
Learn and Grow with Aditi Agarwal
Selen
Es handelt sich um eine Open Source-Suite für automatisierte Tests für Webanwendungen in verschiedenen Browsern und Plattformen. Es ist kein einzelnes Tool, sondern eine Suite von Software. Wir haben Selenbindungen für Python, Java, C #, Ruby und JavaScript. Hier werden wir Web Scraping unter Verwendung von Selen und seinen Python-Bindungen durchführen. Weitere Informationen zu Selen mit Java finden Sie unter dem Link Selen .
Selenium Python-Bindungen bieten eine praktische API für den Zugriff auf Selenium WebDrivers wie Firefox, IE, Chrome, Remote usw. Die derzeit unterstützten Python-Versionen sind 2.7, 3.5 und höher.
Selen installieren
Verwendung der pip Befehl können wir installieren urllib3 entweder in unserer virtuellen Umgebung oder in der globalen Installation.
pip install selenium
Da für Selen ein Treiber erforderlich ist, um mit dem ausgewählten Browser zu kommunizieren, müssen wir ihn herunterladen. Die folgende Tabelle zeigt verschiedene Browser und deren Links zum Herunterladen derselben.
Chrome |
https://sites.google.com/a/chromium.org/ |
Edge |
https://developer.microsoft.com/ |
Firefox |
https://github.com/ |
Safari |
https://webkit.org/ |
Beispiel
Dieses Beispiel zeigt das Web-Scraping mit Selen. Es kann auch zum Testen verwendet werden, was als Selentest bezeichnet wird.
Nachdem wir den bestimmten Treiber für die angegebene Browserversion heruntergeladen haben, müssen wir in Python programmieren.
Zuerst muss importiert werden webdriver aus Selen wie folgt -
from selenium import webdriver
Geben Sie nun den Pfad des Webtreibers an, den wir gemäß unserer Anforderung heruntergeladen haben.
path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)
Geben Sie nun die URL an, die wir in diesem Webbrowser öffnen möchten, der jetzt von unserem Python-Skript gesteuert wird.
browser.get('https://authoraditiagarwal.com/leadershipmanagement')
Wir können auch ein bestimmtes Element kratzen, indem wir den in lxml angegebenen xpath angeben.
browser.find_element_by_xpath('/html/body').click()
Sie können den vom Python-Skript gesteuerten Browser auf Ausgabe überprüfen.
Scrapy
Scrapy ist ein schnelles, in Python geschriebenes Open-Source-Webcrawling-Framework, mit dem die Daten mithilfe von auf XPath basierenden Selektoren von der Webseite extrahiert werden. Scrapy wurde erstmals am 26. Juni 2008 unter BSD-Lizenz veröffentlicht. Der Meilenstein 1.0 wurde im Juni 2015 veröffentlicht. Es bietet uns alle Tools, die wir zum Extrahieren, Verarbeiten und Strukturieren der Daten von Websites benötigen.
Scrapy installieren
Verwendung der pip Befehl können wir installieren urllib3 entweder in unserer virtuellen Umgebung oder in der globalen Installation.
pip install scrapy
Weitere Informationen zu Scrapy finden Sie unter dem Link Scrapy