Python: tutorial completo de rastreo de datos de documentos de un sitio web (con código fuente)

Prefacio

El texto y las imágenes de este artículo provienen de Internet y son solo para fines de aprendizaje y comunicación, y no tienen ningún uso comercial. Si tiene alguna pregunta, comuníquese con nosotros para su procesamiento.

Entorno de desarrollo básico

Python 3.6

Pycharm

Uso de módulos relacionados

import os
import requests
import time
import re
import json
from docx import Document
from docx.shared import Cm

 

Instale Python y agréguelo a las variables de entorno, pip instala los módulos relacionados necesarios.

El rastreador de Python, el análisis de datos, el desarrollo de sitios web y otros videos tutoriales de casos son gratuitos para ver en línea

https://space.bilibili.com/523606542

 Grupo de intercambio de aprendizaje de Python: 1039645993

Análisis de la página de destino

 

El contenido del documento del sitio web tiene forma de imágenes. Tiene su propia interfaz de datos

Enlace de interfaz:

https://openapi.book118.com/getPreview.html?&project_id=1&aid=272112230&t=f2c66902d6b63726d8e08b557fef90fb&view_token=SqX7ktrZ_ZakjDI@vcohcCwbn_PLb3C1&page=1&callback=jQuery18304186406662159248_1614492889385&_=1614492889486

Parámetros de solicitud de interfaz

 

toda la idea

  • Solicitar página web para devolver datos de respuesta (cadena)
  • El índice de datos intermedios (lista) es 0 (cadena) extraído a través de la coincidencia del módulo re
  • A través del módulo json, los datos extraídos se convierten en un módulo json
  • Obtenga la dirección URL de cada imagen atravesando
  • Guarde la imagen en una carpeta local.
  • Guarde la imagen en el documento de Word
  • Implementación del código del rastreador

Implementación del código del rastreador

def download():
    content = 0
    for page in range(1, 96, 6):
        # 给定 2秒延时
        time.sleep(2)
        # 获取时间戳
        now_time = int(time.time() * 1000)
        url = 'https://openapi.book118.com/getPreview.html'
        # 请求参数
        params = {
            'project_id': '1',
            'aid': '272112230',
            't': 'f2c66902d6b63726d8e08b557fef90fb',
            'view_token': 'SqX7ktrZ_ZakjDI@vcohcCwbn_PLb3C1',
            'page': f'{page}',
            '_': now_time,
        }
        # 请求头
        headers = {
            'Host': 'openapi.book118.com',
            'Referer': 'https://max.book118.com/html/2020/0427/8026036013002110.shtm',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
        }
        response = requests.get(url=url, params=params, headers=headers)
        # 使用正则表达式提取内容
        result = re.findall('jsonpReturn\((.*?)\)', response.text)[0]
        # 字符串转json数据
        json_data = json.loads(result)['data']
        # 字典值的遍历
        for value in json_data.values():
            content += 1
            # 拼接图片url
            img_url = 'http:' + value
            print(img_url)
            headers_1 = {
                'Host': 'view-cache.book118.com',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
            }
            # 请求图片url地址 获取content二进制数据
            img_content = requests.get(url=img_url, headers=headers_1).content
            # 文件名
            img_name = str(content) + '.jpg'
            # 保存路径
            filename = 'img\\'
            # 以二进制方式保存 (图片、音频、视频等文件都是以二进制的方式保存)
            with open(filename + img_name, mode='wb') as f:
                f.write(img_content)

punto importante:

1. Debe darse un retraso, de lo contrario no se solicitarán los datos de la interfaz.

2. Al solicitar la URL de la imagen, el parámetro de los encabezados debe escribirse por completo; de lo contrario, la imagen guardada no se puede abrir

3. El nombre debe ser preferiblemente un número dado, 1.jpg, 2.jpg para que sea conveniente para guardarlo posteriormente en Word.

El código de la parte del rastreador es relativamente simple, no hay ninguna dificultad especial.

Para rastrear estos documentos, debe imprimir o consultar, por lo que debe guardar estas imágenes individuales en el documento de Word.

Escribir documento

def save_picture():
    document = Document()
    path = './img/'
    lis = os.listdir(path)
    c = []
    for li in lis:
        index = li.replace('.jpg', '')
        c.append(index)
    c_1 = sorted(list(map(int, c)))
    print(c_1)
    new_files = [(str(i) + '.jpg') for i in c_1]
    for num in new_files:
        img_path = path + num
        document.add_picture(img_path, width=Cm(17), height=Cm(24))
        document.save('tu.doc')  # 保存文档
        os.remove(img_path)  # 删除保存在本地的图片

Supongo que te gusta

Origin blog.csdn.net/m0_48405781/article/details/114398129
Recomendado
Clasificación