-
Notifications
You must be signed in to change notification settings - Fork 0
Documentation — law_codes.py
revoltMoon edited this page Dec 1, 2018
·
18 revisions
Редакция выбирается на этапе проверки грубой ссылки. Используется дата выпуска решения суда. Выбирается наиболее свежая из редакций, в которой есть данное положение и дата вступления в силу которой не позднее даты выпуска решения суда.
- Получение куки из ответа с сервера.
def _get_cookie(response: (response from: urllib.request.urlopen(url,[data],[timeout])))
- response — ответ с сервера.
- str — куки, полученные с сайта.
- Получение данных со страницы.
def _get_page(url: str, reqHeaders: dict[str,str], prevResponse: (response from: urllib.request.urlopen(url,[data],[timeout])), referer: str, raw: bool)
- url — url страницы, которую надо получить;
- reqHeaders — словарь с заголовками POST-запроса;
- prevResponse — это второй элемент кортежа результата, возвращаемого самой _get_page, по умолчанию = None;
- referer — строка с URL страницы, с которой якобы будет сделан переход, по умолчанию = None;
- raw — обработанные ли данные, по умолчанию = false.
-
tuple(response.read() , response())``где response это (response from: urllib.request.urlopen(url,[data],[timeout]))
— данные со страницы.
- Парсим JSON.
def _decode_json_from_str(content: str)
- content — строка в формате JSON.
- list or dict сколь угодной вложенности распарсенных данных из JSON'а.
- Класс, описывающий работу с данными некоторого кодекса.
- Получение редакций документов.
def get_document_redactions(cls, url: str, reqHeaders: dict[str,str], prevResponse: url lib.request.urlopen(req), referer: str)
- cls — представление класса;
- url — url страницы, которую надо получить;
- reqHeaders — словарь с заголовками POST-запроса;
- prevResponse — это второй элемент кортежа результата, возвращаемого самой _get_page, по умолчанию = None;
- referer — строка с URL страницы, с которой якобы будет сделан переход, по умолчанию = None;
-
jsonRedactions['editions']['list'], response
— list и объект класса
- Создание заголовка документа.
def create_header(cls, CUR_RD_KEY: str, supertype: str, doc_type, absolute_path: str, interredaction_id: str, title: str, release_date: str, effective_date: str, attached: list[str], dstLabel: str, parLabelInSavedHtm: str, rdNote: str, consNote: str, text: str)
- cls — представление класса;
- CUR_RD_KEY — ключ текущей редакции;
- supertype — супертип;
- doc_type — тип документа;
- absolute_path — абсолютный путь к файлу заголовка;
- interredaction_id — id данной редакции;
- title — заголовок постановления;
- release_date — дата выхода;
- effective_date — дата вступления в силу;
- attached — список приложений;
- dstLabel — позиция положения кодекса внутри документа на КонсультантПлюс;
- parLabelInSavedHtm — позиция положения кодекса внутри сохранненого html;
- rdNote — примечание о редакции положения, по умолчанию None;
- consNote — примечание КонсультантПлюс к положению, по умолчанию None;
- text — текст постановления с заголовком
header
, по умолчанию None.
- header — словарь с заголовком документа.
- Создаем подзаголовок документа.
def create_subheader(cls, hKey: str, SUBH_SIGN: str, absolute_path: str, interredaction_id: str, title: str, rdNote: str, consNote: str, text: str)
- cls — представление класса;
- hKey — ключ надположения (части статьи — ключ статьи, для статьи — главы т.д.);
- SUBH_SIGN — обозначение данного положения внутри строки doc_id. Для статьи - СТ: КОАПРФ/СТ-2.5;
- absolute_path — абсолютный путь к файлу подзаголовка;
- interredaction_id — id данной редакции;
- title — заголовок постановления;
- rdNote — примечание о редакции положения;
- consNote — примечание КонсультантПлюс к положению;
- text — текст постановления с подзаголовком
header
, по умолчанию None.
- header — словарь с подзаголовком документа.
- Получаем подзаголовки из дерева и возвращаем линии для статей.
def get_subhdrs_frm_tree_and_return_lines_for_articles(cls, treeItem: dict[str,str], hKey: str, CUR_RD_KEY: str, rekeyedAttachedTitles: dict[str,dict[str,str]], splittedHtm: dict[str, dict[str,str]])
- cls — представление класса;
- treeItem — дерево, которое содержит структуру кодекса до статей включительно, берется с сайта КонсультантПлюс;
- hKey — ключ надположения (части статьи — ключ статьи, для статьи — главы т.д.);
- CUR_RD_KEY — ключ текущей редакции;
- rekeyedAttachedTitles — переименованные прикрепленные заголовки;
- splittedHtm — разделенный html.
- dict[str,int] — словарь с uid — ключами и номерами строк — значениями.
- Получаем распарсенную html страницу.
def get_par_html(cls, allHtml: str, par: int)
- cls — представление класса;
- allHtml — html код, который парсим;
- par — начальное id для парсинга.
-
lxml.html.document_fromstring(parHtml[0])
— распарсенная html.
- Получение заголовков из сохраненного html.
def get_paras_and_titles_from_saved_htm(cls, savedHtm: str)
- cls — представление класса;
- savedHtm — сохраненный html код.
- dict[str, str]
- Разделение сохраненного html
def split_saved_htm(cls, savedHtm: str)
- cls — представление класса;
- savedHtm — сохраненный html код.
- dict[str,str]
- Получение примечаний из строки.
def get_cons_note_from_str(cls, string: str)
- cls — представление класса;
- string — строка, в которой ищем примечания.
-
'\n'.join(xl)
, где xl — list.
- Очищаем разделенную html и получаем с добавленными примечаниями.
def clear_splitted_htm_and_get_plus_add_cons_notes(cls, splittedHtm: dict[str, dict[str,str]])
- cls — представление класса;
- splittedHtm — разделенный html код.
- Создаем подзаголовки статей.
def build_article_subheaders_treeItem(cls, articleLines: dict[str, list[str]], CUR_RD_KEY: str)
- cls — представление класса;
- articleLines — словарь со статьями;
- CUR_RD_KEY — ключ текущей редакции.
- None.
- Получение данных из содержимого JSON файла.
def get_code_content(cls, pathToResultJsonLinesFile: str, pathToFileForKeysThathWereDownloadedYet: str)
- cls — представление класса;
- pathToResultJsonLinesFile — путь к файлу с JSON строками из результата;
- pathToFileForKeysThathWereDownloadedYet — путь к файлу для ключей, который мы только что скачали.
- None
- Класс, описывающий настройку параметров для работы с Уголовным Кодексом Российской Федерации.
- Класс, описывающий настройку параметров для работы с Кодексом Российской Федерации об административных правонарушениях.
- Класс, описывающий настройку параметров для работы с Налоговым Кодексом Российской Федерации.
- Класс, описывающий настройку параметров для работы с Гражданским Кодексом Российской Федерации.
- Получение контента из распарсенных данных.
def get_content( codes: set, pathToResultJsonLinesFile: str, pathToFileForKeysThathWereDownloadedYet: str)
- codes — сет с префиксами наших кодексов, по умолчанию =
_ALL_CODES=frozenset(_codesParsers.keys())
; - pathToResultJsonLinesFile — путь к файлу с JSON строками из результата, по умолчанию =
codeHeaders.jsonlines
; - pathToFileForKeysThathWereDownloadedYet — путь к файлу для ключей, который мы только что скачали, по умолчанию =
processedYet.keys
.
- None, но вызывает
_codesParsers[code].get_code_content(pathToResultJsonLinesFile, pathToFileForKeysThathWereDownloadedYet)
, передавая тем самым данные туда.