Legalidad del web scraping
Con Python, podemos raspar cualquier sitio web o elementos particulares de una página web, pero ¿tienes alguna idea de si es legal o no? Antes de raspar cualquier sitio web debemos tener conocimiento sobre la legalidad del raspado web. Este capítulo explicará los conceptos relacionados con la legalidad del web scraping.
Introducción
En general, si va a utilizar los datos extraídos para uso personal, es posible que no haya ningún problema. Pero si va a volver a publicar esos datos, antes de hacer lo mismo, debe realizar una solicitud de descarga al propietario o realizar una investigación de antecedentes sobre las políticas y los datos que va a recopilar.
Investigación necesaria antes del raspado
Si está apuntando a un sitio web para extraer datos de él, debemos comprender su escala y estructura. A continuación se muestran algunos de los archivos que debemos analizar antes de comenzar con el web scraping.
Analizando robots.txt
En realidad, la mayoría de los editores permiten a los programadores rastrear sus sitios web hasta cierto punto. En otro sentido, los editores quieren que se rastreen partes específicas de los sitios web. Para definir esto, los sitios web deben establecer algunas reglas para indicar qué partes se pueden rastrear y cuáles no. Estas reglas se definen en un archivo llamadorobots.txt.
robots.txtes un archivo legible por humanos que se utiliza para identificar las partes del sitio web que los rastreadores pueden y no pueden rastrear. No existe un formato estándar de archivo robots.txt y los editores del sitio web pueden hacer modificaciones según sus necesidades. Podemos comprobar el archivo robots.txt de un sitio web en particular proporcionando una barra y un archivo robots.txt después de la URL de ese sitio web. Por ejemplo, si queremos verificarlo para Google.com, entonces debemos escribirhttps://www.google.com/robots.txt y obtendremos algo de la siguiente manera:
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……..
Algunas de las reglas más comunes que se definen en el archivo robots.txt de un sitio web son las siguientes:
User-agent: BadCrawler
Disallow: /
La regla anterior significa que el archivo robots.txt pregunta a un rastreador con BadCrawler agente de usuario para no rastrear su sitio web.
User-agent: *
Crawl-delay: 5
Disallow: /trap
La regla anterior significa que el archivo robots.txt retrasa al rastreador durante 5 segundos entre las solicitudes de descarga de todos los agentes de usuario para evitar la sobrecarga del servidor. los/traplink intentará bloquear los rastreadores maliciosos que siguen enlaces no permitidos. Hay muchas más reglas que puede definir el editor del sitio web según sus requisitos. Algunos de ellos se discuten aquí:
Analizar archivos de sitemaps
¿Qué se supone que debe hacer si desea rastrear un sitio web para obtener información actualizada? Rastreará todas las páginas web para obtener esa información actualizada, pero esto aumentará el tráfico del servidor de ese sitio web en particular. Es por eso que los sitios web proporcionan archivos de mapas del sitio para ayudar a los rastreadores a localizar el contenido actualizado sin necesidad de rastrear todas las páginas web. El estándar del mapa del sitio se define enhttp://www.sitemaps.org/protocol.html.
Contenido del archivo de mapa del sitio
El siguiente es el contenido del archivo de mapa del sitio de https://www.microsoft.com/robots.txt que se descubre en el archivo 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
El contenido anterior muestra que el mapa del sitio enumera las URL en el sitio web y además permite que un webmaster especifique información adicional como la última fecha de actualización, cambio de contenido, importancia de la URL en relación con otras, etc.sobre cada URL.
¿Cuál es el tamaño del sitio web?
¿El tamaño de un sitio web, es decir, el número de páginas web de un sitio web, afecta la forma en que rastreamos? Ciertamente si. Porque si tenemos menos páginas web para rastrear, entonces la eficiencia no sería un problema serio, pero supongamos que si nuestro sitio web tiene millones de páginas web, por ejemplo Microsoft.com, descargar cada página web secuencialmente tomaría varios meses y entonces la eficiencia sería una seria preocupación.
Comprobación del tamaño del sitio web
Al verificar el tamaño del resultado del rastreador de Google, podemos tener una estimación del tamaño de un sitio web. Nuestro resultado se puede filtrar usando la palabra clavesitemientras realiza la búsqueda en Google. Por ejemplo, estimar el tamaño dehttps://authoraditiagarwal.com/ se da a continuación -
Puede ver que hay alrededor de 60 resultados, lo que significa que no es un gran sitio web y el rastreo no conduciría al problema de la eficiencia.
¿Qué tecnología utiliza el sitio web?
Otra pregunta importante es si la tecnología utilizada por el sitio web afecta la forma en que rastreamos. Sí, afecta. Pero, ¿cómo podemos comprobar la tecnología que utiliza un sitio web? Hay una biblioteca de Python llamadabuiltwith con la ayuda del cual podemos conocer la tecnología que utiliza un sitio web.
Ejemplo
En este ejemplo vamos a comprobar la tecnología utilizada por el sitio web. https://authoraditiagarwal.com con la ayuda de la biblioteca Python builtwith. Pero antes de usar esta biblioteca, debemos instalarla de la siguiente manera:
(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
Ahora, con la ayuda de seguir una línea simple de códigos, podemos verificar la tecnología utilizada por un sitio web en particular:
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']}
¿Quién es el propietario del sitio web?
El propietario del sitio web también es importante porque si el propietario es conocido por bloquear los rastreadores, los rastreadores deben tener cuidado al extraer los datos del sitio web. Hay un protocolo llamadoWhois con la ayuda de la cual podemos averiguar sobre el propietario del sitio web.
Ejemplo
En este ejemplo, vamos a comprobar si el propietario del sitio web dice microsoft.com con la ayuda de Whois. Pero antes de usar esta biblioteca, debemos instalarla de la siguiente manera:
(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
Ahora, con la ayuda de seguir una línea simple de códigos, podemos verificar la tecnología utilizada por un sitio web en particular:
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]"
],
}