Moduli Python per Web Scraping

In questo capitolo impariamo vari moduli Python che possiamo usare per il web scraping.

Ambienti di sviluppo Python che utilizzano virtualenv

Virtualenv è uno strumento per creare ambienti Python isolati. Con l'aiuto di virtualenv, possiamo creare una cartella che contiene tutti gli eseguibili necessari per utilizzare i pacchetti richiesti dal nostro progetto Python. Ci permette anche di aggiungere e modificare moduli Python senza accesso all'installazione globale.

È possibile utilizzare il seguente comando per installare 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

Ora, dobbiamo creare una directory che rappresenterà il progetto con l'aiuto del seguente comando:

(base) D:\ProgramData>mkdir webscrap

Ora, entra in quella directory con l'aiuto del seguente comando:

(base) D:\ProgramData>cd webscrap

Ora, dobbiamo inizializzare la cartella dell'ambiente virtuale di nostra scelta come segue:

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

Ora, attiva l'ambiente virtuale con il comando fornito di seguito. Una volta attivato con successo, ne vedrai il nome sul lato sinistro tra parentesi.

(base) D:\ProgramData\webscrap>websc\scripts\activate

Possiamo installare qualsiasi modulo in questo ambiente come segue:

(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

Per disattivare l'ambiente virtuale, possiamo utilizzare il seguente comando:

(websc) (base) D:\ProgramData\webscrap>deactivate
(base) D:\ProgramData\webscrap>

Puoi vedere che (websc) è stato disattivato.

Moduli Python per Web Scraping

Il web scraping è il processo di costruzione di un agente in grado di estrarre, analizzare, scaricare e organizzare automaticamente informazioni utili dal web. In altre parole, invece di salvare manualmente i dati dai siti Web, il software di web scraping caricherà ed estrarrà automaticamente i dati da più siti Web secondo le nostre esigenze.

In questa sezione, discuteremo di utili librerie Python per il web scraping.

Richieste

È una semplice libreria di scraping web in Python. È un'efficiente libreria HTTP utilizzata per accedere alle pagine web. Con l'aiuto diRequests, possiamo ottenere l'HTML grezzo delle pagine web che possono quindi essere analizzate per recuperare i dati. Prima di usarerequests, cerchiamo di capire la sua installazione.

Richieste di installazione

Possiamo installarlo nel nostro ambiente virtuale o nell'installazione globale. Con l'aiuto dipip comando, possiamo installarlo facilmente come segue:

(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

Esempio

In questo esempio, stiamo effettuando una richiesta GET HTTP per una pagina web. Per questo dobbiamo prima importare la libreria delle richieste come segue:

In [1]: import requests

Nella seguente riga di codice, utilizziamo le richieste per effettuare richieste HTTP GET per l'URL: https://authoraditiagarwal.com/ effettuando una richiesta GET.

In [2]: r = requests.get('https://authoraditiagarwal.com/')

Ora possiamo recuperare il contenuto utilizzando .text proprietà come segue -

In [5]: r.text[:200]

Si noti che nel seguente output abbiamo i primi 200 caratteri.

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

È un'altra libreria Python che può essere utilizzata per recuperare dati da URL simili a requestsbiblioteca. Puoi leggere di più su questo nella sua documentazione tecnica suhttps://urllib3.readthedocs.io/en/latest/.

Installazione di Urllib3

Usando il pip comando, possiamo installare urllib3 nel nostro ambiente virtuale o nell'installazione globale.

(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

Esempio: scraping utilizzando Urllib3 e BeautifulSoup

Nel seguente esempio, stiamo raschiando la pagina web utilizzando Urllib3 e BeautifulSoup. Stiamo usandoUrllib3al posto della libreria delle richieste per ottenere i dati grezzi (HTML) dalla pagina web. Quindi stiamo usandoBeautifulSoup per analizzare i dati HTML.

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)

Questo è l'output che osserverai quando esegui questo codice -

<title>Learn and Grow with Aditi Agarwal</title>
Learn and Grow with Aditi Agarwal

Selenio

È una suite di test automatizzati open source per applicazioni web su diversi browser e piattaforme. Non è un singolo strumento ma una suite di software. Abbiamo collegamenti al selenio per Python, Java, C #, Ruby e JavaScript. Qui eseguiremo il web scraping usando il selenio e le sue associazioni Python. Puoi saperne di più su Selenium con Java sul link Selenium .

I collegamenti Selenium Python forniscono una comoda API per accedere a Selenium WebDrivers come Firefox, IE, Chrome, Remote ecc. Le attuali versioni di Python supportate sono 2.7, 3.5 e superiori.

Installazione del selenio

Usando il pip comando, possiamo installare urllib3 nel nostro ambiente virtuale o nell'installazione globale.

pip install selenium

Poiché il selenio richiede un driver per interfacciarsi con il browser scelto, dobbiamo scaricarlo. La tabella seguente mostra diversi browser e i relativi collegamenti per scaricarli.

Chrome

https://sites.google.com/a/chromium.org/

Edge

https://developer.microsoft.com/

Firefox

https://github.com/

Safari

https://webkit.org/

Esempio

Questo esempio mostra il web scraping usando il selenio. Può anche essere utilizzato per il test che si chiama test del selenio.

Dopo aver scaricato il driver specifico per la versione del browser specificata, è necessario programmare in Python.

Innanzitutto, è necessario importare webdriver dal selenio come segue -

from selenium import webdriver

Ora, fornisci il percorso del driver web che abbiamo scaricato secondo il nostro requisito -

path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)

Ora, fornisci l'URL che vogliamo aprire in quel browser web ora controllato dal nostro script Python.

browser.get('https://authoraditiagarwal.com/leadershipmanagement')

Possiamo anche raschiare un particolare elemento fornendo xpath come fornito in lxml.

browser.find_element_by_xpath('/html/body').click()

Puoi controllare l'output nel browser, controllato dallo script Python.

Scrapy

Scrapy è un framework di scansione web veloce e open source scritto in Python, utilizzato per estrarre i dati dalla pagina web con l'aiuto di selettori basati su XPath. Scrapy è stato rilasciato per la prima volta il 26 giugno 2008 con licenza BSD, con il rilascio della milestone 1.0 nel giugno 2015. Ci fornisce tutti gli strumenti necessari per estrarre, elaborare e strutturare i dati dai siti web.

Installazione di Scrapy

Usando il pip comando, possiamo installare urllib3 nel nostro ambiente virtuale o nell'installazione globale.

pip install scrapy

Per uno studio più dettagliato di Scrapy puoi andare al link Scrapy