Compartir tecnología

Principios del rastreador de Python y 3 casos pequeños (código fuente)

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Principio de los reptiles

Un rastreador web es un programa que se utiliza para recuperar automáticamente contenido web. Simula el proceso de navegación de los usuarios por páginas web, obtiene el código fuente de las páginas web mediante el envío de solicitudes HTTP y utiliza tecnología de análisis y extracción para obtener los datos requeridos.

1. Proceso de solicitud y respuesta HTTP

El rastreador envía una solicitud HTTP al sitio web de destino. La solicitud incluye la URL, el método de solicitud (como GET o POST), los encabezados de solicitud (encabezados), etc. Una vez que el servidor recibe la solicitud, devolverá una respuesta HTTP, que contiene el código de estado, el encabezado de la respuesta y el cuerpo de la respuesta (contenido de la página web).

2. Tecnologías de rastreo de uso común

  • solicitar biblioteca:Por ejemplorequestsyaiohttp, utilizado para enviar solicitudes HTTP.
  • biblioteca de análisis:Por ejemploBeautifulSouplxmlyPyQuery, utilizado para analizar el contenido de la página web.
  • repositorio:Por ejemplopandasySQLite, utilizado para almacenar datos rastreados.
  • biblioteca asíncrona:Por ejemploasyncioyaiohttp, Se utiliza para implementar rastreadores asincrónicos y mejorar la eficiencia del rastreo.

2. Bibliotecas de uso común para rastreadores de Python

1. Solicitar biblioteca

  • peticiones: Una biblioteca HTTP simple y potente que admite la persistencia y agrupación de conexiones HTTP, verificación de certificados SSL, cookies, etc.
  • aiohttp: Una biblioteca HTTP asincrónica basada en asyncio, adecuada para escenarios de rastreadores de alta concurrencia.

2. Biblioteca de análisis

  • HermosaSopa: Una biblioteca para analizar HTML y XML, fácil de usar y compatible con múltiples analizadores.
  • xls: una biblioteca de análisis XML y HTML eficiente que admite selectores XPath y CSS.
  • PyQuery: Una versión Python de jQuery con sintaxis similar a jQuery y fácil de usar.

3. Repositorio

  • Pandas: una potente biblioteca de análisis de datos que proporciona estructuras de datos y herramientas de análisis de datos y admite múltiples formatos de archivos.
  • SQLite: una base de datos liviana que admite consultas SQL y es adecuada para proyectos de rastreadores pequeños.

A continuación, utilizaremos 7 pequeños casos de rastreadores de Python para ayudarlo a aprender y comprender mejor los conocimientos básicos de los rastreadores de Python. La siguiente es una introducción y código fuente para cada caso:

Caso 1: Rastrea las 250 mejores películas de Douban

Este caso utilizaBeautifulSoupLa biblioteca rastrea información como títulos de películas, calificaciones y número de críticos de las 250 películas principales de Douban y guarda esta información en un archivo CSV.

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import csv
  4. # 请求URL
  5. url = 'https://movie.douban.com/top250'
  6. # 请求头部
  7. headers = {
  8. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
  9. }
  10. # 解析页面函数
  11. def parse_html(html):
  12. soup = BeautifulSoup(html, 'lxml')
  13. movie_list = soup.find('ol', class_='grid_view').find_all('li')
  14. for movie in movie_list:
  15. title = movie.find('div', class_='hd').find('span', class_='title').get_text()
  16. rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
  17. comment_num = movie.find('div', class_='star').find_all('span')[-1].get_text()
  18. writer.writerow([title, rating_num, comment_num])
  19. # 保存数据函数
  20. def save_data():
  21. f = open('douban_movie_top250.csv', 'a', newline='', encoding='utf-8-sig')
  22. global writer
  23. writer = csv.writer(f)
  24. writer.writerow(['电影名称', '评分', '评价人数'])
  25. for i in range(10):
  26. url = 'https://movie.douban.com/top250?start=' str(i * 25) '