¿Cómo puedo comenzar a aprender a escribir scripts de web scraping?

Para HTML / CSS, puede probar algunos sitios de tutoriales como http://codeacademy.com y similares, pero realmente, si se acerca a aprender a codificar con el objetivo de aprender a codificar, no lo logrará. Abórdelo con un problema que necesita resolver, y use el tutorial para ayudarlo, solo aplicando lo práctico puede aprenderlo adecuadamente, los tutoriales lo dejarán como un generador de cuerpo plagado de esteroides: un montón de insignias y premios, un inflado sentido de autoestima, y ​​nada en el interior. Elige un propósito y trabaja para lograrlo.

En cuanto al scraping, básicamente funciona así: descargue una página por URL (con algo como CURL), analice el resultado como texto normal (o con algunas bibliotecas transversales DOM) para identificar los elementos que necesita, extraer los valores, aplicarlos a la siguiente URL con la que descargue la página siguiente, y así sucesivamente.

Por ejemplo:
1) Descargar la página de la lista de cursos
2) Buscar curso en la lista de cursos
3) Analiza y extrae el enlace al curso para obtener la URL del curso
4) Descargar la página del curso por la URL obtenida
5) Analizar y extraer el número de estudiantes matriculados.
6) Enviar correo electrónico si se detecta un cambio positivo.

Para esto, sin embargo, debe tener un conocimiento básico de HTML / CSS para identificar correctamente los elementos que necesita extraer del marcado que descarga. Por ejemplo, el enlace para el curso podría ser:

Mi curso impresionante

Luego, tendría que extraer la parte intermedia en el atributo “href” como el enlace del curso, y luego descargarla. En el contenido que luego se descarga, verá el número de estudiantes inscritos en un elemento como este:

Actualmente matriculado: 23

Usando regex o una biblioteca transversal DOM, entonces extraería este elemento y lo analizaría para el valor numérico, y así sucesivamente.

Es posible que no necesite 🙂 Eche un vistazo a kimono: Convierta los sitios web en API estructuradas desde su navegador en segundos, podemos ayudarlo a crear una API que extraiga datos a intervalos regulares. fo ‘gratis!

Editar: me doy cuenta de que esa no es la respuesta más útil a la esencia de esta pregunta. Si está buscando profundizar en los mecanismos detrás del raspado, elaboraría como tal:

1. Date cuenta de que el raspado web puede ser bastante frustrante. ¡Estás lidiando con todo tipo de rarezas en la web, algunas configuradas intencionalmente para detener lo que estás tratando de hacer!
1a. Algunos sitios son mucho, mucho más difíciles de raspar que otros.
1b. Los sitios más fáciles son a menudo los más feos. Más javascript hace que su trabajo sea más difícil. Sin javascript = ideal.
2. En cuanto a la aproximación, comencé con la hermosa biblioteca de sopa de Python, y luego incursioné en cosas como mecanizar. Phantomjs es mucho más poderoso en lo que te permite hacer (IMO), pero creo que hay una curva de aprendizaje mucho más pronunciada. Comenzaría imprimiendo una página completa y luego refinándola a ciertos elementos que desee.
3. Una vez que puede tomar ciertos elementos, puede obtener ciertos enlaces y luego alimentarlos en ciertas funciones que extraen más datos. Por ejemplo, rastrea una página de índice y toma todos sus enlaces, luego señala esos enlaces y obtiene los datos que desea.

Es una especie de ejemplo de alto nivel, ¡espero que ayude!

Si conoces Python, estás a más de la mitad del camino. Y dado que solo necesita hacer un sitio, esto debería ser bastante fácil. Como otros han dicho, el conocimiento de regex y html es imprescindible, pero no tiene que ser sorprendente con ellos, solo el conocimiento básico servirá. Hay una lección en la clase de Desarrollo Web de Udacity que trata sobre html, y una clase en la clase de Lenguajes de Programación de Udacity que debería darle suficiente información sobre expresiones regulares para comenzar a moverse. Regex puede ser complicado, pero para lo que necesita hacer, supongo que la siguiente expresión regular funcionará bastante bien:

(. +?) donde las etiquetas de inicio y finalización son las etiquetas que rodean el texto que desea. Sin embargo, hay muchas razones por las que esa expresión regular no funcionaría. Para hacer una mejor, tendrá que saber mucho más sobre la expresión regular que la clase que mencioné anteriormente.

Si necesita hacer muchas cosas de inicio de sesión, sugeriría Selenium. Es fácil de usar y también puede manejar contenido dinámico, lo que supongo que tiene mucho.

Los comandos que probablemente usarás mucho en Selenium son:
1) driver = webdriver.Firefox ()
2) driver.get (…)
3) driver.find_element_by_link_text (…) /driver.find_element_by_xpath (…) /driver.find_element_by_partial_link_text (…)
4) element.click ()
5) element.send_keys (… ..)
6) driver.page_source

Si no tiene muchas cosas web profundas en su sitio, urllib2 es una alternativa mucho más rápida.

Una vez que tenga el html / text, puede analizar usando regex. Probablemente desee guardar sus datos en un archivo de base de datos o de texto. pero supongo que podría mantener el mismo programa ejecutándose todo el tiempo, y simplemente comparar el texto nuevo con el antiguo cada vez.

Si ya conoce Python, pero todo lo anterior es nuevo para usted, creo que 2-3 días es una estimación decente de cuánto tiempo llevará esto para despegar. Si no eres tan bueno en Python, tal vez una semana o dos.

Puede comenzar con estos ejemplos de raspado de Python 20+ Ejemplos de raspado de Python Web (Beautifulsoup y Selenium) – Like Geeks

Creo que la biblioteca Selenium es muy buena como comienzo.

Además, BeatuifulSoup es muy simple. Solo elige el tuyo.

Gracias.

Afortunadamente, existen soluciones que le permiten hacerlo sin la necesidad de programar una línea de código. Mira Colabo, por ejemplo. Con su extensión de navegador, puede crear escenarios complejos que atraviesan el proceso de autenticación hasta el curso necesario y luego extraer el número que desee. La herramienta también permite configurar un evento que se enviará a su dirección de correo electrónico en función del número extraído. Lo último, que es más importante, es que obtienes un espacio en la nube donde tu escenario se ejecutará periódicamente, de forma gratuita.

Tutorial de Python Scrapy Tutorial de Scrapy – Documentación de Scrapy 0.17.0

Para una introducción a HTML y CSS, puede consultar los Tutoriales web en línea de W3Schools
y también estos videos:

Como sabes Python, -Web Scraping with Scrapy y MongoDB será sencillo para ti. Si desea optar por un marco de Python, Scrapy es el mejor que existe. A medida que aumenta la complejidad del sitio objetivo, el raspado puede ser una tarea muy difícil.

Comenzamos una página de preguntas y respuestas para aquellos que necesitan ayuda con el aprendizaje del raspado web: Datahut Answers. Publique su pregunta allí y alguien de nuestro equipo lo ayudará.

Nunca desanimaría a nadie de aprender algo nuevo, pero como señala Ben, existen herramientas que significan que ya no tiene que escribir scripts, por lo que puede enfocar sus habilidades de programación en lo que hace con los datos, en lugar de recogiéndolo

Mi solución para usted: simplemente pegue la URL en https://magic.import.io y obtenga los datos en una API de uso gratuito en aproximadamente 8 segundos. – Diablos, incluso puedes hacerlo en un móvil sobre la marcha.

En cuanto a HTML / CSS, el uso de la academia de códigos y solo intentarlo es mi consejo, aprendí haciendo y buscando mucho en Google.

Para su necesidad inmediata, simplemente escriba un correo electrónico al administrador del sitio web del curso diciéndole su plan para desechar datos, digamos cada dos minutos, y tal vez una vez que escriba su aplicación, deje que todos sus amigos la usen. Para cualquier administrador de sistema cuerdo, él / ella probablemente implementaría algunos servicios de notificación para usted.

Pero en serio, estoy a favor de que aprendas algunas habilidades de programación. Su punto de partida es probablemente rizo y expresiones regulares. También lea sobre cómo iniciar sesión porque su página del curso probablemente requiera algún tipo de inicio de sesión.

Para eliminar cualquier sitio web, primero debe aplicar un XPath a esa página en su lenguaje de programación para obtener varias partes del mismo, ya que desea eliminar ubicaciones, así que aplique Xpath a ubicaciones de ciudades. Este es un método conveniente, ya que sus datos estarán en un formato que se puede descargar fácilmente en Excel.

Tengo una herramienta para el raspado web que es totalmente gratuita para descargar. Esta herramienta se compara mejor con otras herramientas de raspado de datos disponibles en el mercado.

No es muy popular antes de los 6 meses, pero ahora aumenta en la proporción de popularidad de esta herramienta. Se llama “Easy Data Feed” y está disponible en Easy Data Feed – Software de extracción de datos por Internet

Esta herramienta se utiliza para todo tipo de raspado de datos, como imágenes, URL, precios, ubicación, SKU, UPC, etc.

Puede leer sobre cómo usarlo aquí: FUENTE ABIERTA

También tienen desarrolladores, puede contratarlos para que hagan el trabajo por usted y su Skype es “easydatafeed”

Prueba scaperwiki

Si se trata de Python, sugiero tener una buena experiencia con el módulo BeautifulSoup. Es muy útil para raspar los sitios web de recursos necesarios.