¿Cuál es la mejor opción de lenguaje de programación para web scraping?

Pitón.

Primero , hay muchas buenas bibliotecas que puede usar para analizar páginas HTML, como lxml, BeautifulSoup, PyQuery, Parsel, etc. Por lo tanto, no tiene que recurrir a expresiones regulares increíblemente complejas y frágiles para raspar los datos que desea .

En segundo lugar , hay una impresionante biblioteca http llamada Solicitudes que puede usar para obtener los datos y navegar por las páginas.

Y por último, pero no menos importante , Scrapy. Es el marco de raspado web más popular que existe (16k estrellas en github y contando). Scrapy resuelve automáticamente muchos problemas relacionados con el rastreo, como sesiones / cookies, redirecciones, reintentos, aceleración, autenticación HTTP, entre muchas otras características. Y todo esto es personalizable. También le permite raspar las páginas utilizando selectores CSS o expresiones XPath.

Aquí hay un ejemplo rápido que elimina los envíos de la página principal de reddit / r / programation:

importación scrapy

clase Reddit (scrapy.Spider):
nombre = “reddit”
start_urls = [‘http://www.reddit.com/r/programming’]

def parse (auto, respuesta):
para enviar en response.css (“div.entry”):
rendimiento {
‘url’: submit.css (“a.title :: attr (href)”). extract_first (),
‘title’: submit.css (“a.title :: text”). extract_first (),
‘usuario’: submit.css (“a.author :: text”). extract_first ()
}

Otra cosa interesante sobre el uso de Python y Scrapy para webscraping es la comunidad detrás de esto. Hay muchos complementos impulsados ​​por la comunidad, canales de soporte (StackOverflow, lista de correo de usuarios scrapy, canal IRC #scrapy, etc.) y también la documentación oficial.

Descargo de responsabilidad: trabajo en Scrapinghub, los principales encargados de Scrapy.

Realmente depende de lo que esté raspando y con qué frecuencia necesita raspar datos.

Para proyectos complejos, recomendaría C #, Python o Ruby. Para tareas muy simples, javascript con artoo.js, o si no tiene experiencia en programación, iMacros.

Para la mayoría de los proyectos, usaría javascript con nightmare.js

Nightmare.js es

  • Gratis
  • Fácil de usar
  • Fuente abierta
  • Fácilmente extensible

Puede leer los documentos en nightmare.js aquí para ver cuán simple es el código.

Plug desvergonzado: tengo tutoriales en mi blog y en Youtube que enseñan los conceptos básicos de artoo.js y nightmare.js

Raspado web rápido y fácil con artoo.js

Comience con NightmareJS – Tutorial de raspado de pantalla de Craigslist

Web Bot Tutorial – Publicación automática en Craigslist – Nightmare.js playlist

Ayer realizamos una prueba entre 6 idiomas, puedes leer más aquí:
¿Cuál es el lenguaje más eficiente para fines de raspado web?

Dependiendo de lo que esté tratando de raspar, Perl puede ser muy efectivo para trabajos pequeños o para secuencias de comandos de trabajos más grandes. De hecho, sugeriría que esta es una de las pocas veces en que Perl es apropiado para algo.

Python o Javascript. Ambos tienen buenas bibliotecas y herramientas.

En Web Robots usamos Javascript porque Javascript es nativo en el navegador Chrome y puedes hacer cosas increíbles con código inyectado y API del navegador.

Aprender un lenguaje propietario para tareas de raspado web es un punto discutible.

Usaría Perl debido a su excelente soporte para expresiones regulares; Otras buenas opciones serían Javascript, Python, Scala o Haskell. Depende de la escala en la que quieras trabajar.

Puede hacer una gran cantidad de raspado web con las herramientas existentes, incluidas las herramientas de línea de comandos como curl y lynx. Si quieres hacer un script de cosas, puedes hacer un montón de envolver esas herramientas con un poco de script de shell. Quiere guiones más elegantes, tal vez perl o tcl.

He usado Java y Jsoup varias veces, extremadamente fácil.