¡Hola Khabrovchans! Durante mucho tiempo hubo un deseo de escribir un artículo, pero no se atrevió.
Mi serie de publicaciones describirá mi camino de Junior a Middle, y luego quizás incluso a Senior. Lo programaremos en Python.
La documentación de PS para algunas bibliotecas poco conocidas se adjuntará al final.
Brevemente sobre mí: Python comenzó a estudiar hace dos años, no hubo avances especiales.
Los fundamentos mismos se decepcionaron, ya que les enseñé durante un año y medio. Ahora estoy estudiando el idioma en profundidad, entiendo su estructura y cómo sucede todo. En los siguientes artículos subiré el código, usaré todas las bibliotecas nuevas y nuevas, y como saben, Python tiene mucho :)
Por donde empezar Hace un par de meses escribí mi primer analizador. Resultó que escribir analizadores es bastante simple e incluso puedes ganar dinero con ellos. Hasta ahora, te mostraré un par de ejemplos usando la pila de
solicitudes bs4 + . Analizaremos a nuestro amado
Habr .
No estoy seguro si todos están familiarizados con la biblioteca
fake_useragent . Es bastante conveniente para el análisis; crea una falsificación de agente de usuario.
ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox}
Este es el próximo bloque pequeño de nuestro código. En la primera línea, creamos la variable ua, que usa los métodos de la clase UserAgent. En la segunda línea, hemos creado un diccionario que nos ayudará con el análisis en el futuro.
Ahora cree la función misma para analizar.
def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error")
Esta función analizará el enlace, que indicamos la presencia de una etiqueta con la clase "post__title_link".
La forma más fácil de guardar datos es guardarlos en un archivo. Entonces hagámoslo.
url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
Al final, obtenemos un archivo que contiene los nombres y enlaces de las publicaciones que recopilamos de la primera página.
Código fuente (completo), solo sin comentarios:
from bs4 import BeautifulSoup as bs from fake_useragent import UserAgent import requests ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox} def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error") url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
Buen resultado! Excepto por saltos de línea y comentarios, cumplimos exactamente 20 líneas. Para empezar, bastante bueno :)
Según lo prometido, enlaces a la documentación de las bibliotecas utilizadas:
Solicitudes:
* exprimir *bs4:
* apretar *fake_useragent:
* squeeze *¡Gracias a todos por su atención! Hasta pronto!
PD: si hay algún comentario, el siguiente artículo no tardará en llegar