Información de películas de rastreo de Python: introducción a Ajax, práctica de rastreo de casos + almacenamiento MongoDB

Introducción a Ajax

Ajax (JavaScript y XML asincrónicos) es una tecnología utilizada para implementar la comunicación asincrónica en aplicaciones web. Permite actualizar una parte de una página web en tiempo real sin actualizar toda la página web mediante el intercambio de datos con el servidor en segundo plano. Las principales características de Ajax incluyen:

  1. Comunicación asincrónica: Ajax es asincrónica, lo que significa que puede comunicarse sin bloquear la interfaz de usuario. El usuario puede seguir interactuando con la página web sin esperar a que el servidor responda.

  2. Intercambio de datos: Ajax permite el intercambio de datos entre el cliente y el servidor, normalmente utilizando XML, JSON u otros formatos de datos. Esto permite que las páginas web carguen, muestren y actualicen datos en tiempo real sin recargar completamente toda la página.

  3. No se requiere actualización de página: las aplicaciones web tradicionales generalmente requieren una actualización de página completa cada vez que interactúan con el servidor. Ajax puede actualizar solo una parte de la página, lo que proporciona una experiencia de usuario más fluida.

  4. Contenido dinámico: Ajax permite a los desarrolladores crear contenido web dinámico y actualizado en tiempo real que se puede cargar y modificar dinámicamente en función de las acciones y necesidades del usuario.

  5. Usos múltiples: Ajax se puede utilizar no solo para cargar datos, sino también para enviar formularios, validar entradas de usuarios, búsquedas de autocompletar, chat en vivo y muchas otras funciones interactivas en aplicaciones web.

Ajax generalmente consta de los siguientes componentes principales:

  • Objeto XMLHttpRequest: este es el núcleo de Ajax, que permite que el código JavaScript se comunique con el servidor, envíe solicitudes HTTP y reciba respuestas. fetch APIEn cambio, se utiliza a menudo en el desarrollo web moderno XMLHttpRequestporque es más simple y potente.

  • Script del lado del servidor: el lado del servidor debe proporcionar un punto final que acepte solicitudes Ajax y pueda procesar estas solicitudes, realizar las operaciones correspondientes y devolver datos de respuesta.

  • Manejo de eventos asincrónicos: el código JavaScript debe poder manejar solicitudes y respuestas de Ajax en segundo plano para garantizar que no bloquee la interfaz de usuario. Esto generalmente implica el uso de funciones de devolución de llamada o promesas para manejar operaciones asincrónicas.

  • Formato de datos: Ajax puede utilizar una variedad de formatos de datos para intercambiar información, incluidos XML, JSON, HTML y texto sin formato.

Ajax se ha convertido en una parte importante del desarrollo de aplicaciones web modernas, proporcionando una forma eficaz de lograr una experiencia de usuario dinámica, interactiva y en tiempo real. Muchas aplicaciones y marcos web populares (como React, Angular y Vue.js) utilizan Ajax para manejar la carga y la interacción de datos. A través de Ajax, las aplicaciones web pueden responder mejor a las necesidades del usuario y brindar una mejor experiencia de usuario.

Casos reales

Basado en el artículo anterior, https://blog.csdn.net/rubyw/article/details/132714499?spm=1001.2014.3001.5501 utiliza Ajax para representar dinámicamente la página, rastrearla y almacenarla en la base de datos local de mongo
. : https://spa1.scrape.center

Mire solo la información debajo del menú XHR y observe la situación cuando cambia la página


Insertar descripción de la imagen aquíInsertar descripción de la imagen aquí
Página de detalles de la primera página
Insertar descripción de la imagen aquí

# Ajax + MongoDB存储

import pymongo
import requests
import logging

logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(levelname)s: %(message)s')

INDEX_URL = 'https://spa1.scrape.center/api/movie/?limit={limit}&offset={offset}'

MONGO_CONNECTION_STRING = 'mongodb://localhost:27017'
MONGO_DB_NAME = 'movies'
MONGO_COLLECTION_NAME = 'movies'

client = pymongo.MongoClient(MONGO_CONNECTION_STRING)
db = client['movies']
collection = db['movies']

# 处理 JSON 接口
def scrape_api(url):
    logging.info('scraping %s...', url)
    try:
        response = requests.get(url)
        if response.status_code == 200:
            return response.json()
        else:
            logging.error('get invalid status code %s while scraping %s',
                      response.status_code, url)
        return None
    except requests.RequestException:
        logging.error('error occurred while scraping %s', url, exc_info=True)


LIMIT = 10


def scrape_index(page):
    url = INDEX_URL.format(limit=LIMIT, offset=LIMIT * (page - 1))
    return scrape_api(url)


DETAIL_URL = 'https://spa1.scrape.center/api/movie/{id}'


def scrape_detail(id):
    url = DETAIL_URL.format(id=id)
    return scrape_api(url)


TOTAL_PAGE = 10


def save_data(data):
    collection.update_one({
    
    
        'name': data.get('name')   # 根据name进行查询
    }, {
    
    
        '$set': data   # 表示更新操作
    }, upsert=True)   # 存在即更新,不存在即插入


def main():
    for page in range(1, TOTAL_PAGE + 1):
        index_data = scrape_index(page)
        for item in index_data.get('results'):
            id = item.get('id')
            detail_data = scrape_detail(id)
            logging.info('detail data %s', detail_data)
            save_data(detail_data)
            logging.info('data saved successfully')


if __name__ == '__main__':
    main()

La herramienta de visualización RoboMongo/Robo 3T es fácil de usar y potente. El sitio web oficial es https://robomongo.org/. Es compatible con las tres plataformas principales. El enlace de descarga es https://robomongo.org/download.

Finalmente, los resultados finales rastreados y guardados se pueden ver en la base de datos local de mongo:
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/rubyw/article/details/132715850
Recomendado
Clasificación