¿Qué es mejor usar para raspar los datos del sitio web y enviar correos electrónicos, PHP o python?

¡Esto suena como si fueras a hacer un spambot! Tenga en cuenta que podría terminar en problemas legales una vez que comience a usarlo, lo que provocará la confiscación de sus nombres de dominio, su conexión a Internet cerrada y una posible multa de 6 dígitos o peor. Entonces, después de dar esta advertencia, le daré una respuesta.

¡Ninguno de los dos idiomas será adecuado!

En primer lugar, PHP es un lenguaje de desarrollo web, por lo que debería ejecutarlo en su propio sitio. Pero está buscando un servicio que se ejecute (desatendido) en segundo plano, ya que tiene que buscar en varios sitios, siguiendo muchas URL diferentes. Esto sería extremadamente complejo de hacer en PHP y no funcionará muy bien a menos que escriba módulos personalizados para PHP en, por ejemplo, C ++.

Python podría proporcionarle una mejor opción, ya que se hizo para ser más genérico. Pero analizar páginas web para el contenido correcto (direcciones de correo electrónico y formularios de contacto) es un poco difícil. Su mejor opción aquí sería el uso de expresiones regulares para buscar textos que coincidan con un patrón de correo electrónico y los campos de entrada para formularios de contacto. También necesitará encontrar el patrón para varias URL dentro de la página, ya que desea seguir todas las páginas dentro del sitio para buscar la información que desea. Esto también significa que debe realizar un seguimiento de los lugares que ya ha analizado, ya que no desea terminar en un bucle sin fin donde su código va y viene entre dos páginas a medida que se vinculan entre sí.

También tendrá que analizar archivos JavaScript ya que algunos sitios cargarán dinámicamente cualquier contenido. Peor aún, los sitios incluso pueden comenzar a mostrar contenido una vez que se activan eventos específicos, por lo que es probable que ni siquiera encuentre más páginas si no analiza el JavaScript. Entonces, sin esos eventos, estarías leyendo páginas en blanco …

El siguiente problema será el rendimiento. Su aplicación necesitaría descargar una gran cantidad de páginas y si utiliza un enfoque de subproceso único, será un proceso lento. Necesita usar múltiples hilos para acelerar el rendimiento, que es bastante complejo en Python.

Por lo tanto, la mejor opción sería un lenguaje compilado como C ++, Delphi o C #. He creado algo similar, pero para encontrar imágenes en varios sitios en Delphi, pero eso fue hace más de 10 años. Si tengo que rehacerlo, estaría usando C # ya que tiene una gran biblioteca para descargar sitios web y un alto rendimiento en el procesamiento de los datos de texto. En el modo de 64 bits, también podría contener una gran lista de URL visitadas, por lo que no leeré ninguna de ellas dos veces o más y también podría conectarlo a alguna base de datos donde solo tendría una tabla con un solo campo: URL Ese campo también debe ser único, de modo que si no puede agregarle un registro, ha visitado la página antes …

Como C # también tiene un gran soporte para aplicaciones multiproceso, simplemente usaría ese lenguaje, a menos que mi sistema operativo sea Linux. En Linux, elegiría C / C ++ en su lugar. Sería más problemático, pero también funcionaría bastante bien, ya que C ++ tiene un buen soporte para subprocesos múltiples.

Y tanto C # como C ++ tienen un excelente rendimiento en el manejo de cadenas.


Ahora, tendrá otro problema ya que su bot quiere visitar varias páginas y completar formularios de contacto. No está leyendo ninguno de los términos y condiciones, pero está enviando mensajes a los propietarios que podrían obligarlo legalmente a aceptar un contrato. En lugar de completar formularios de contacto, es posible que haya aceptado comprar productos de ellos. ¡Y tratarán de encontrarte y se asegurarán de que les pagues por ello!

Y si usa esta información para enviar spam a esos sitios, tenga en cuenta que es probable que lo atrapen y lo condenen. Su proveedor de Internet notará la gran cantidad de tráfico de su sistema y cuando también se dé cuenta de que hay una gran cantidad de spam enviado desde su dirección, perderá su acceso a Internet mientras tiene que explicar en la corte lo que ha estado haciendo …

Seré parcial, pero Python.

Puede usar el módulo Solicitudes para enviar una solicitud GET a un sitio web, como a continuación:

solicitudes de importación

r = request.get (‘www.quora.com’)
print (r.text)

” ‘La salida sería el HTML de la URL anterior, algo así como si presionaras CTRL + U’ ”

Puede tomar cada enlace de la página usando la biblioteca BeautifulSoup4

solicitudes de importación
desde bs4 import BeautifulSoup

url = ‘ https://www.quora.com/&#039 ; # URL que desea raspar
r = request.get (url)
url_list = [] # Lista vacía para almacenar URL.
soup = BeautifulSoup (r.text, ‘html.parser’) # Creando un objeto BeautifulSoup

# Recorriendo cada etiqueta en la página de arriba.
para el enlace en soup.findAll (‘a’):
link = link.get (‘href’)
if (enlace == ‘#’):
# Omite los enlaces “#” que no llevan a ninguna parte.
pasar
más:
imprimir (enlace)

No haré tu tarea por ti, pero lo que debes hacer ahora es:

  • Raspe la página para los protocolos “mailto:” (si los usan para contactar.
  • Encuentre el formulario de contacto utilizando los recursos anteriores.

Lo que estás proponiendo es SPAM y nadie te ayudará con esto. Los spammers son notoriamente vilipendiados y no nos gusta lo que estás haciendo. Solo para.

Hay formas mucho mejores y mucho más efectivas de llegar a las personas. Estás perdiendo el tiempo con esto.

Solo para.

La respuesta es: cualquiera que sea el idioma que conozca mejor su spammity-spam-spam.

Usaría cualquiera de las herramientas de automatización web que existen. Por razones obvias, echaría un vistazo a Dexi.io, una herramienta de extracción de datos web para profesionales. Es mucho más que un simple raspador web y puede hacer todo tipo de interacciones y combinarlas con la herramienta de automatización inteligente (robot de tuberías).

Python es más rápido y más adecuado para el trabajo, aunque uso PHP mucho más que Python. Sin embargo, cualquiera hará el trabajo.

Perl 🙂

Web :: Scraper es tu amigo. Y LWP.

Además, esto suena spam.

Yo usaría Python para esto. Use la biblioteca Selenium para completar el formulario. Necesitará las ID o xpaths de los elementos web con los que necesita interactuar.