Recientemente, Habré publicó un artículo Raspando sitios web modernos sin navegadores sin cabeza , y en los comentarios se sugirió que sin un navegador sin cabeza no funcionaría obtener un número de teléfono de un anuncio en Avito o Yulia. Quiero refutar esto, a continuación se muestra un script de Python de menos de 100 líneas de código que analiza correctamente "avito"
No soy un especialista en "parsing" de sitios y este no es mi trabajo, pero no es raro que haga esto para resolver mi trabajo, y no solo tareas. Por ejemplo, necesitas sacar el saldo de una cuenta personal en algún servicio (operadores móviles) que no tiene una API para esto, o, lo que es bastante triste, una lista de dominios del registrador (otro), que tampoco tiene API.
Al igual que en el artículo, un par de comentarios de los que me impulsaron a escribir esta publicación, también utilizo Python y la biblioteca de solicitudes. Si no puede encontrar una API "interna", deberá incluir la biblioteca BeautifulSoup. Pero aquí todo resultó ser mucho más sencillo.
Si abre la versión "completa" del sitio https://avito.ru e intenta copiar el número de teléfono, queda claro que el número de teléfono en el sitio no está escrito, sino dibujado. Pero en la versión móvil del sitio, el número se da en texto. Puede verificar esto mirando las respuestas cuando hace clic en el botón "Llamar" en las herramientas para desarrolladores en el navegador.
No analizaré mi script en detalle, hay suficientes comentarios en el código para entender qué está sucediendo y en qué etapa. En resumen, se utiliza la versión móvil del sitio, se declaran variables para la búsqueda del sitio, así como dos variables "clave" y "cookie", sobre ellas con más detalle, luego se inicia el proceso de obtención de cookies abriendo la página principal, luego se inicia un ciclo que recopila id de todos los anuncios que pasan por todas las páginas. Después de recibir todos los anuncios en el segundo ciclo, revíselos y obtenga la información que nos interesa.
Captura de pantalla del guión:
, .. API. - API. , , . . - . - 100 .
"key" "cookie", key , , - . cookie , "", , IP , "" .
Si es interesante, les contaré más sobre cómo estaba buscando una API o puedo escribir un ejemplo similar para el "whirligig".