Добавлены методы для работы с json

This commit is contained in:
Ilia Miheev
2025-04-27 08:38:25 +03:00
parent 4d77a2d9be
commit 6245f6d0a1
+23 -9
View File
@@ -4,33 +4,47 @@ from selenium import webdriver
from time import sleep from time import sleep
from os import remove from os import remove
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import json
class Pars: class Pars:
'''Библиотека для работы с файлами во время парсинга''' '''Библиотека для работы с файлами во время парсинга'''
def __init__(self, url, pathToSaveFile, writeMethod='w'): def __init__(self, url, pathToSaveFile, writeMethod='w'):
"""Конструктор""" """Конструктор"""
self.url = url self.url = url
self.pathToSaveFile = pathToSaveFile self.pathToSaveFile = pathToSaveFile
self.writeMethod = writeMethod self.writeMethod = writeMethod
def returnBs4Object(self, userEncoding='utf8'):
def loadJson(self, pathToJsonFile:str):
"""Получаем данные из json файла"""
with open(pathToJsonFile) as jsonFile:
src = json.load(jsonFile)
return src
def dumpJson(self, data:any, pathToJsonFile:str):
"""Записываем данные в json файл"""
with open(pathToJsonFile, 'w') as jsonFile:
json.dump(data, jsonFile, indent=4, ensure_ascii=0)
def returnBs4Object(self, myEncoding:str='utf8', parser:str='lxml'):
"""Возвращаем объект beautifulsoup""" """Возвращаем объект beautifulsoup"""
with open(self.pathToSaveFile, encoding=userEncoding) as file: with open(self.pathToSaveFile, encoding=myEncoding) as file:
src = file.read() src = file.read()
soup = BeautifulSoup(src, 'lxml') soup = BeautifulSoup(src, parser)
return soup return soup
def deleteFile(self): def deleteFile(self):
"""Удаляем файл после работы с ним""" """Удаляем файл после работы с ним"""
remove(self.pathToSaveFile) remove(self.pathToSaveFile)
def get_static_page(self): def get_static_page(self, headers:dict):
'''Получаем статическую страницу''' '''Получаем статическую страницу'''
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
}
try: try:
# Отправляем запрос # Отправляем запрос
req = get(self.url, headers=headers) req = get(self.url, headers=headers)
@@ -59,13 +73,13 @@ class Pars:
def get_dinamic_page(self, closeWindow:bool=1): def get_dinamic_page(self, closeWindow:bool=1):
'''Функция для получения динамической страницы''' '''Получаем динамическую страницу'''
# Устанавливаем опции для Chrome WebDriver # Устанавливаем опции для Chrome WebDriver
options = Options() options = Options()
if closeWindow: if closeWindow:
options.add_argument('--headless') options.add_argument('--headless')
# открываем браузер # открываем браузер
with webdriver.Chrome(options=options) as driver: with webdriver.Chrome(options=options) as driver:
driver.get(self.url) driver.get(self.url)