Подправлены настройки валидации
Для сокращения кода код проверки вынесен в отдельную функцию. В некоторых методах валидации не было, сейчас все функции валидируются
This commit is contained in:
+44
-14
@@ -13,14 +13,19 @@ from cerberus import Validator
|
|||||||
class Pars:
|
class Pars:
|
||||||
'''Модуль для работы с запросами и bs4'''
|
'''Модуль для работы с запросами и bs4'''
|
||||||
|
|
||||||
|
def __validation(self, schema, expected):
|
||||||
|
v = Validator(schema)
|
||||||
|
if not v.validate(expected):
|
||||||
|
raise ValueError(v.errors)
|
||||||
|
|
||||||
def mkdir(self, nameDir: str):
|
def mkdir(self, nameDir: str):
|
||||||
'''Создаёт папку если её ещё нет
|
'''Создаёт папку если её ещё нет
|
||||||
|
|
||||||
nameDir: название папки которая будет создана'''
|
nameDir: название папки которая будет создана'''
|
||||||
schema = {'nameDir': {'type': 'string'}}
|
schema = {'nameDir': {'type': 'string'}}
|
||||||
v = Validator(schema)
|
expected = {'nameDir': nameDir}
|
||||||
if not v.validate({'nameDir': nameDir}):
|
self.__validation(schema, expected)
|
||||||
raise ValueError(v.errors)
|
|
||||||
if not exists(nameDir):
|
if not exists(nameDir):
|
||||||
mkdir(nameDir)
|
mkdir(nameDir)
|
||||||
|
|
||||||
@@ -36,9 +41,8 @@ class Pars:
|
|||||||
'encoding': {'type': 'string'},
|
'encoding': {'type': 'string'},
|
||||||
'parser': {'type': 'string'},
|
'parser': {'type': 'string'},
|
||||||
}
|
}
|
||||||
v = Validator(schema)
|
expected = {'pathToFile': pathToFile, 'encoding': encoding, 'parser': parser}
|
||||||
if not v.validate({'pathToFile': pathToFile, 'encoding': encoding, 'parser': parser}):
|
sels.__validation(schema, expected)
|
||||||
raise ValueError(v.errors)
|
|
||||||
|
|
||||||
with open(pathToFile, encoding=encoding) as file:
|
with open(pathToFile, encoding=encoding) as file:
|
||||||
src = file.read()
|
src = file.read()
|
||||||
@@ -55,9 +59,8 @@ class Pars:
|
|||||||
'arr': {'type': 'list'},
|
'arr': {'type': 'list'},
|
||||||
'needFix': {'type': 'boolean'},
|
'needFix': {'type': 'boolean'},
|
||||||
}
|
}
|
||||||
v = Validator(schema)
|
expected = {'arr': arr, 'needFix': needFix}
|
||||||
if not v.validate({'arr': arr, 'needFix': needFix}):
|
self.__validation(schema, expected)
|
||||||
raise ValueError(v.errors)
|
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
for item in arr:
|
for item in arr:
|
||||||
@@ -80,6 +83,15 @@ class Pars:
|
|||||||
|
|
||||||
arr: список объектов bs4 из которых будет извлекаться атрибут
|
arr: список объектов bs4 из которых будет извлекаться атрибут
|
||||||
att: строка с названием атрибута по которому будет осуществляться поиск'''
|
att: строка с названием атрибута по которому будет осуществляться поиск'''
|
||||||
|
|
||||||
|
schema = {
|
||||||
|
'arr': {'type': 'list'},
|
||||||
|
'att': {'type': 'string'}
|
||||||
|
}
|
||||||
|
expected = {'arr': arr, 'att': att}
|
||||||
|
self.__validation(schema, expected)
|
||||||
|
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
for item in arr:
|
for item in arr:
|
||||||
data = item.get(att)
|
data = item.get(att)
|
||||||
@@ -97,11 +109,11 @@ class Pars:
|
|||||||
pprint(data)
|
pprint(data)
|
||||||
|
|
||||||
def getStaticPage(self, pathToSaveFile: str, url: str, writeMethod: str = 'w', headers: dict = None) -> int:
|
def getStaticPage(self, pathToSaveFile: str, url: str, writeMethod: str = 'w', headers: dict = None) -> int:
|
||||||
'''Получаем статическую страницу и возвращаем статус ответа от сервера
|
'''Сохраняем статическую страницу и возвращаем статус ответа от сервера
|
||||||
|
|
||||||
pathToSaveFile: путь, куда сохранится полученный файл
|
pathToSaveFile: путь, куда сохранится полученный файл
|
||||||
url: ссылка на данные
|
url: ссылка на данные
|
||||||
writeMethod: метод записи данных в файл. "W" записывает текст, "WB" — байты
|
writeMethod: метод записи данных в файл. "w" записывает текст, "wb" — байты
|
||||||
headers: заголовки запроса к серверу'''
|
headers: заголовки запроса к серверу'''
|
||||||
|
|
||||||
if headers is None:
|
if headers is None:
|
||||||
@@ -127,6 +139,17 @@ class Pars:
|
|||||||
"User-Agent": user_agent
|
"User-Agent": user_agent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
schema = {
|
||||||
|
'pathToSaveFile': {'type': 'string'},
|
||||||
|
'url': {'type': 'string'},
|
||||||
|
'writeMethod': {'type': 'string', 'allowed': ['w', 'wb']},
|
||||||
|
'headers': {'type': 'dict'},
|
||||||
|
}
|
||||||
|
expected = {'pathToSaveFile': pathToSaveFile, 'att': att, 'writeMethod': writeMethod, 'headers': headers,}
|
||||||
|
self.__validation(schema, expected)
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Отправляем запрос
|
# Отправляем запрос
|
||||||
req = requests.get(url, headers=headers)
|
req = requests.get(url, headers=headers)
|
||||||
@@ -182,9 +205,8 @@ class Pars:
|
|||||||
'closeWindow': {'type': 'boolean'},
|
'closeWindow': {'type': 'boolean'},
|
||||||
'timeSleep': {'type': 'integer', 'min': 2},
|
'timeSleep': {'type': 'integer', 'min': 2},
|
||||||
}
|
}
|
||||||
v = Validator(schema)
|
expected = {'pathToSaveFile': pathToSaveFile, 'url': url, 'closeWindow': closeWindow, 'timeSleep': timeSleep}
|
||||||
if not v.validate({'pathToSaveFile': pathToSaveFile, 'url': url, 'closeWindow': closeWindow, 'timeSleep': timeSleep}):
|
self.__validation(schema, expected)
|
||||||
raise ValueError(v.errors)
|
|
||||||
|
|
||||||
|
|
||||||
# Устанавливаем опции для Chrome WebDriver
|
# Устанавливаем опции для Chrome WebDriver
|
||||||
@@ -205,6 +227,14 @@ class Pars:
|
|||||||
url: ссылка на сайт
|
url: ссылка на сайт
|
||||||
timeSleep: время ожидания браузера перед тем как скролить страницу дальше'''
|
timeSleep: время ожидания браузера перед тем как скролить страницу дальше'''
|
||||||
|
|
||||||
|
schema = {
|
||||||
|
'pathToSaveFile': {'type': 'string'},
|
||||||
|
'url': {'type': 'string'},
|
||||||
|
'timeSleep': {'type': 'integer', 'min': 2},
|
||||||
|
}
|
||||||
|
expected = {'pathToSaveFile': pathToSaveFile, 'url': url, 'timeSleep': timeSleep}
|
||||||
|
self.__validation(schema, expected)
|
||||||
|
|
||||||
with webdriver.Chrome() as driver:
|
with webdriver.Chrome() as driver:
|
||||||
driver.get(url)
|
driver.get(url)
|
||||||
a = input('Нажми ENTER когда закончишь')
|
a = input('Нажми ENTER когда закончишь')
|
||||||
|
|||||||
Reference in New Issue
Block a user