Legalità del Web Scraping
Con Python, possiamo raschiare qualsiasi sito web o particolari elementi di una pagina web, ma hai idea se sia legale o meno? Prima di eseguire lo scraping di qualsiasi sito Web, è necessario conoscere la legalità del Web scraping. Questo capitolo spiegherà i concetti relativi alla legalità del web scraping.
introduzione
In generale, se intendi utilizzare i dati raschiati per uso personale, potrebbero non esserci problemi. Ma se hai intenzione di ripubblicare quei dati, prima di fare lo stesso dovresti fare una richiesta di download al proprietario o fare qualche ricerca di base anche sulle politiche sui dati che intendi raschiare.
Ricerca richiesta prima della raschiatura
Se stai prendendo di mira un sito web per estrarre dati da esso, dobbiamo comprenderne la scala e la struttura. Di seguito sono riportati alcuni dei file che dobbiamo analizzare prima di iniziare il web scraping.
Analisi del file robots.txt
In realtà la maggior parte degli editori consente ai programmatori di eseguire la scansione dei propri siti Web in una certa misura. In un altro senso, gli editori desiderano che venga eseguita la scansione di parti specifiche dei siti web. Per definirlo, i siti web devono mettere alcune regole per indicare quali parti possono essere sottoposte a scansione e quali no. Tali regole sono definite in un file chiamatorobots.txt.
robots.txtè un file leggibile dall'uomo utilizzato per identificare le parti del sito web che i crawler sono autorizzati e non sono autorizzati a raschiare. Non esiste un formato standard del file robots.txt e gli editori del sito web possono apportare modifiche secondo le loro esigenze. Possiamo controllare il file robots.txt per un particolare sito web fornendo una barra e un file robots.txt dopo l'URL di quel sito web. Ad esempio, se vogliamo controllarlo per Google.com, dobbiamo digitarehttps://www.google.com/robots.txt e otterremo qualcosa come segue:
User-agent: *
Disallow: /search
Allow: /search/about
Allow: /search/static
Allow: /search/howsearchworks
Disallow: /sdch
Disallow: /groups
Disallow: /index.html?
Disallow: /?
Allow: /?hl=
Disallow: /?hl=*&
Allow: /?hl=*&gws_rd=ssl$
and so on……..
Alcune delle regole più comuni definite nel file robots.txt di un sito web sono le seguenti:
User-agent: BadCrawler
Disallow: /
La regola precedente indica che il file robots.txt chiede a un crawler con BadCrawler agente utente per non eseguire la scansione del loro sito web.
User-agent: *
Crawl-delay: 5
Disallow: /trap
La regola precedente indica che il file robots.txt ritarda un crawler di 5 secondi tra le richieste di download per tutti gli user-agent per evitare il sovraccarico del server. Il/traplink proverà a bloccare i crawler dannosi che seguono i link non consentiti. Ci sono molte altre regole che possono essere definite dall'editore del sito web secondo i loro requisiti. Alcuni di loro sono discussi qui -
Analisi dei file Sitemap
Cosa dovresti fare se desideri eseguire la scansione di un sito Web per informazioni aggiornate? Eseguirai la scansione di ogni pagina web per ottenere quelle informazioni aggiornate, ma questo aumenterà il traffico del server di quel particolare sito web. Questo è il motivo per cui i siti Web forniscono file di mappa del sito per aiutare i crawler a individuare i contenuti in aggiornamento senza dover eseguire la scansione di ogni pagina Web. Lo standard della mappa del sito è definito inhttp://www.sitemaps.org/protocol.html.
Contenuto del file Sitemap
Quello che segue è il contenuto del file della mappa del sito di https://www.microsoft.com/robots.txt che viene scoperto nel file robot.txt -
Sitemap: https://www.microsoft.com/en-us/explore/msft_sitemap_index.xml
Sitemap: https://www.microsoft.com/learning/sitemap.xml
Sitemap: https://www.microsoft.com/en-us/licensing/sitemap.xml
Sitemap: https://www.microsoft.com/en-us/legal/sitemap.xml
Sitemap: https://www.microsoft.com/filedata/sitemaps/RW5xN8
Sitemap: https://www.microsoft.com/store/collections.xml
Sitemap: https://www.microsoft.com/store/productdetailpages.index.xml
Sitemap: https://www.microsoft.com/en-us/store/locations/store-locationssitemap.xml
Il contenuto di cui sopra mostra che la mappa del sito elenca gli URL sul sito Web e consente inoltre a un webmaster di specificare alcune informazioni aggiuntive come la data dell'ultimo aggiornamento, la modifica dei contenuti, l'importanza dell'URL rispetto ad altri ecc. Su ogni URL.
Qual è la dimensione del sito web?
La dimensione di un sito Web, ovvero il numero di pagine Web di un sito Web, influisce sul modo in cui eseguiamo la scansione? Certamente sì. Perché se abbiamo un numero inferiore di pagine Web da sottoporre a scansione, l'efficienza non sarebbe un problema serio, ma supponiamo che se il nostro sito Web ha milioni di pagine Web, ad esempio Microsoft.com, il download di ciascuna pagina Web in sequenza richiederebbe diversi mesi e allora l'efficienza sarebbe una seria preoccupazione.
Controllo delle dimensioni del sito web
Controllando la dimensione del risultato del crawler di Google, possiamo avere una stima delle dimensioni di un sito web. Il nostro risultato può essere filtrato utilizzando la parola chiavesitedurante la ricerca su Google. Ad esempio, stimando la dimensione dihttps://authoraditiagarwal.com/ è dato di seguito -
Puoi vedere che ci sono circa 60 risultati, il che significa che non è un grande sito web e la scansione non porterebbe al problema dell'efficienza.
Quale tecnologia viene utilizzata dal sito web?
Un'altra domanda importante è se la tecnologia utilizzata dal sito web influisce sul modo in cui eseguiamo la scansione? Sì, colpisce. Ma come possiamo verificare la tecnologia utilizzata da un sito web? C'è una libreria Python denominatabuiltwith con l'aiuto del quale possiamo conoscere la tecnologia utilizzata da un sito web.
Esempio
In questo esempio controlleremo la tecnologia utilizzata dal sito web https://authoraditiagarwal.com con l'aiuto della libreria Python builtwith. Ma prima di utilizzare questa libreria, dobbiamo installarla come segue:
(base) D:\ProgramData>pip install builtwith
Collecting builtwith
Downloading
https://files.pythonhosted.org/packages/9b/b8/4a320be83bb3c9c1b3ac3f9469a5d66e0
2918e20d226aa97a3e86bddd130/builtwith-1.3.3.tar.gz
Requirement already satisfied: six in d:\programdata\lib\site-packages (from
builtwith) (1.10.0)
Building wheels for collected packages: builtwith
Running setup.py bdist_wheel for builtwith ... done
Stored in directory:
C:\Users\gaurav\AppData\Local\pip\Cache\wheels\2b\00\c2\a96241e7fe520e75093898b
f926764a924873e0304f10b2524
Successfully built builtwith
Installing collected packages: builtwith
Successfully installed builtwith-1.3.3
Ora, con l'aiuto di una semplice riga di codici, possiamo controllare la tecnologia utilizzata da un determinato sito Web:
In [1]: import builtwith
In [2]: builtwith.parse('http://authoraditiagarwal.com')
Out[2]:
{'blogs': ['PHP', 'WordPress'],
'cms': ['WordPress'],
'ecommerce': ['WooCommerce'],
'font-scripts': ['Font Awesome'],
'javascript-frameworks': ['jQuery'],
'programming-languages': ['PHP'],
'web-servers': ['Apache']}
Chi è il proprietario del sito web?
Anche il proprietario del sito Web è importante perché se il proprietario è noto per bloccare i crawler, i crawler devono fare attenzione durante la rimozione dei dati dal sito Web. C'è un protocollo denominatoWhois con l'aiuto del quale possiamo conoscere il proprietario del sito web.
Esempio
In questo esempio controlleremo il proprietario del sito Web, ad esempio microsoft.com, con l'aiuto di Whois. Ma prima di utilizzare questa libreria, dobbiamo installarla come segue:
(base) D:\ProgramData>pip install python-whois
Collecting python-whois
Downloading
https://files.pythonhosted.org/packages/63/8a/8ed58b8b28b6200ce1cdfe4e4f3bbc8b8
5a79eef2aa615ec2fef511b3d68/python-whois-0.7.0.tar.gz (82kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 164kB/s
Requirement already satisfied: future in d:\programdata\lib\site-packages (from
python-whois) (0.16.0)
Building wheels for collected packages: python-whois
Running setup.py bdist_wheel for python-whois ... done
Stored in directory:
C:\Users\gaurav\AppData\Local\pip\Cache\wheels\06\cb\7d\33704632b0e1bb64460dc2b
4dcc81ab212a3d5e52ab32dc531
Successfully built python-whois
Installing collected packages: python-whois
Successfully installed python-whois-0.7.0
Ora, con l'aiuto di una semplice riga di codici, possiamo controllare la tecnologia utilizzata da un determinato sito Web:
In [1]: import whois
In [2]: print (whois.whois('microsoft.com'))
{
"domain_name": [
"MICROSOFT.COM",
"microsoft.com"
],
-------
"name_servers": [
"NS1.MSFT.NET",
"NS2.MSFT.NET",
"NS3.MSFT.NET",
"NS4.MSFT.NET",
"ns3.msft.net",
"ns1.msft.net",
"ns4.msft.net",
"ns2.msft.net"
],
"emails": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
}