2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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.
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).
requests
yaiohttp
, utilizado para enviar solicitudes HTTP.BeautifulSoup
、lxml
yPyQuery
, utilizado para analizar el contenido de la página web.pandas
ySQLite
, utilizado para almacenar datos rastreados.asyncio
yaiohttp
, Se utiliza para implementar rastreadores asincrónicos y mejorar la eficiencia del rastreo.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:
Este caso utilizaBeautifulSoup
La 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.
- import requests
- from bs4 import BeautifulSoup
- import csv
-
- # 请求URL
- url = 'https://movie.douban.com/top250'
- # 请求头部
- headers = {
- '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'
- }
-
- # 解析页面函数
- def parse_html(html):
- soup = BeautifulSoup(html, 'lxml')
- movie_list = soup.find('ol', class_='grid_view').find_all('li')
- for movie in movie_list:
- title = movie.find('div', class_='hd').find('span', class_='title').get_text()
- rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
- comment_num = movie.find('div', class_='star').find_all('span')[-1].get_text()
- writer.writerow([title, rating_num, comment_num])
-
- # 保存数据函数
- def save_data():
- f = open('douban_movie_top250.csv', 'a', newline='', encoding='utf-8-sig')
- global writer
- writer = csv.writer(f)
- writer.writerow(['电影名称', '评分', '评价人数'])
- for i in range(10):
-