Парсинг сайтов через скрипт на питоне по API

Fiddler

Новичок
Пользователь
Фев 17, 2025
1
0
1
ос виндус 10
питон3,6-3,8
библиотека requests

Доброй ночи, опишу картину
у меня 3,5к сайтов.
Клонированы из 9 оригинальных сайтов, остальное поддомены
хочу через скрипт на питоне менять код, изображение, текст на сайтах.
Каждый сайт разбит на серии от 180 до 1000.
Сам в коде не силен от слова совсем, поэтому обратился за помощью к нейронке(Mistral)
Сайты лежат на сервере Beget.
На текущий момент есть CSV файл с данными и текстом и недо код
Сначала скрипт должен был все это делать сразу на сайте, понял что лучше если запрос будет приходить сразу на хостинг

СSV файл
api_url,api_key,site_id,search_text,replace_text
https://api.beget.com,your_api_key,site_id_1,"БЛа бла бла ","ДА да да"
https://api.beget.com,your_api_key,site_id_2,"БЛа бла бла ","ДА да да"

Сам код
Python:
import requests
import json
import csv

# Ваши данные для доступа к API
login = 'your_login'  # Замените на ваш логин для API
password = 'your_password'  # Замените на ваш пароль для API
api_url = 'https://api.beget.com/api'

# Функция для выполнения запроса к API
def api_request(method, endpoint, params=None):
    url = f'{api_url}/{endpoint}'
    params = params or {}
    params.update({'login': login, 'passwd': password, 'input_format': 'plain', 'output_format': 'json'})
    response = requests.request(method, url, params=params)
    try:
        return response.json()
    except requests.exceptions.JSONDecodeError:
        print(f"Ошибка декодирования JSON. Ответ: {response.text}")
        return None

# Функция для выполнения команды на сервере
def execute_command(site_id, command):
    params = {
        'site_id': site_id,
        'command': command
    }
    response = api_request('POST', 'site/exec', params)
    if response and response.get('status') == 'success':
        print(f"Команда '{command}' выполнена успешно на сайте {site_id}")
    else:
        print(f"Ошибка выполнения команды на сайте {site_id}: {response.get('error_text', 'Неизвестная ошибка')} (Код ошибки: {response.get('error_code', 'Неизвестный код')})")

# Функция для замены текста в файлах на сервере
def replace_text_in_files(site_id, search_text, replace_text, file_path):
    # Команда для замены текста в файле
    command = f"sed -i 's/{search_text}/{replace_text}/g' {file_path}"
    execute_command(site_id, command)

# Чтение списка сайтов из CSV-файла
with open('CSV-файл - Лист1.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        site_id = row['site_id']
        search_text = row['search_text']
        replace_text = row['replace_text']
        file_path = row['file_path']  # Путь к файлу на сервере

        # Замена текста
        if search_text and replace_text and file_path:
            print(f"Начинается замена текста на сайте {site_id}")
            replace_text_in_files(site_id, search_text, replace_text, file_path)
            print(f"Текст '{search_text}' заменен на '{replace_text}' в файле {file_path} на сайте {site_id}")

подскажите в том направление двигаюсь или колесо уже придумано?
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
451
126
43
ты хотел спросить в том ли направлении двигается нейронка Mistral?
 

Форум IT Специалистов