Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
6.1.3 Парсинг данных
В текущей версии библиотеки поддерживаются следующие форматы: CSV и RDFa.
Данные реестра наборов открытых данных получаются при помощи парсера, алгоритм которого описан в разделе «Парсеры». Приоритетным является формат RDFa, поэтому сначала производится попытка получить данные реестра наборов открытых данных в формате RDFa при помощи парсера RDFa. Если данные в формате RDFa не получены или не валидны, то дополнительно производится попытка получить данные реестра наборов открытых данных в формате CSV при помощи парсера CSV.
6.1.3.1 Парсинг данных в формате RDFa
Страница реестра наборов открытых данных в формате RDFa должна быть расположена по ссылке в формате http:///opendata, где http:/// это доменное имя проверяемого сайта, переданное в качестве аргумента. Данная страница парсится с помощью парсера RDFa. Если парсер RDFa закончил работу с ошибкой, то считается, что формат RDFa не обнаружен и парсинг данных в формате RDFa завершается с ошибкой «формат RDFa не обнаружен». Иначе парсер возвращает структурированный массив данных со всеми содержащимися объектами RDFa на странице и их свойствами, с которыми и происходит дальнейшая работа.
Далее проверяется наличие свойства rdf:type у объекта http:///opendata и его значения dc:Collection. Если это свойство у этого объекта не обнаружено или его значение не равно dc:Collection, то считается, что формат RDFa не обнаружен и парсинг данных в формате RDFa завершается с ошибкой «формат RDFa не обнаружен».
Пояснение: данная проверка проверяет, определен ли объект http:///opendata в качестве коллекции, в данном случае в качестве реестра наборов.
Далее проверяется наличие свойства dc:hasPart у объекта http:///opendata. Если это свойство у этого объекта не обнаружено, то считается, что формат RDFa не обнаружен и парсинг данных в формате RDFa завершается с ошибкой «формат RDFa не обнаружен».
Пояснение: данная проверка проверяет, представлено ли в объекте реестра свойство, которое является ссылкой на страницы наборов открытых данных. Если это свойство не представлено, то смысла от такого реестра наборов открытых данных нет, так как ссылки на наборы в нем отсутствуют.
Далее извлекаются и проверяются все значения свойства dc:hasPart у объекта http:///opendata. Каждое значение этого свойства потенциально является набором открытых данных. Именно с этого момента начинает заполняться результат проверки реестра наборов открытых данных. Каждый набор открытых данных прошедший проверку попадает в результат.
Каждое значение dc:hasPart является ссылкой на другой объект (объект набора открытых данных). И для каждого значения производится проверка на существование этого объекта в результате работы парсера RDFa. Если объект существует, то у этого объекта производится проверка на наличие свойства dc:title. Если это свойство существует и для него задано значение, то данный набор открытых данных включается в результат проверки реестра наборов открытых данных. Если в результате не было включено ни одного набора, то считается, что формат RDFa не обнаружен и парсинг данных в формате RDFa завершается с ошибкой «формат RDFa не обнаружен».
6.1.3.2 Парсинг данных в формате CSV
Файл реестра наборов открытых данных в формате CSV должен быть расположен по ссылке в формате http:///opendata/opendatalist. csv, где http:/// это доменное имя проверяемого сайта, переданное в качестве аргумента. Данный файл парсится с помощью парсера CSV. Если парсер CSV закончил работу с ошибкой, то считается, что формат CSV не обнаружен и парсинг данных в формате CSV завершается с ошибкой «формат CSV не обнаружен». Иначе парсер возвращает двумерный массив данных, с которым и происходит дальнейшая работа.
Далее анализируются данные массива. Первая строка массива определяется как строка с заголовками. Остальные строки определяются как строки идентифицирующие наборы открытых данных. Вторая колонка определяется как колонка содержащая заголовок набора открытых данных. Колонка содержащая ссылку на страницу набора открытых данных определяется опытным путем. А именно в первой строке, которая определена как набор открытых данных, по очереди анализируются все колонки на наличие в нём url. Колонка, в которой будет найден валидный url и будет определяться колонкой содержащей ссылку на страницу набора открытых данных. Если такая колонка не будет найдена, то считается, что формат CSV не обнаружен и парсинг данных в формате CSV завершается с ошибкой «формат CSV не обнаружен».
Далее по очереди перебираются все строки, которые определены как наборы открытых данных. Если колонка с заголовком не пустая, то набор открытых данных включается в результат проверки реестра наборов открытых данных. Если в результате не было включено ни одного набора, то считается, что формат CSV не обнаружен и парсинг данных в формате CSV завершается с ошибкой «формат CSV не обнаружен».
6.1.4 Результат
Результатом проверки реестра наборов открытых данных является структурированный массив содержащий перечень наборов открытых данных, где по каждому набору известны 2 параметра: наименование набора и его идентификационный номер.
Если результат, ни в формате RDFa, ни в формате CSV не получен, то проверка реестра наборов открытых данных завершается с ошибкой «машиночитаемый формат реестра наборов открытых данных не обнаружен».
6.2 Набор открытых данных
6.2.1 Проверка аргумента
Набор открытых данных всегда проверяется в контексте реестра наборов открытых данных. Аргументом для проверки набора открытых данных является идентификатор набора, который можно получить из результата проверки реестра наборов открытых данных.
6.2.1.1 Проверка корректности аргумента
Аргумент проверяется на соответствие следующему регулярному выражению: «/^[0-9]{10}-[a-zA-Z0-9_]+$/u». Если аргумент не соответствует этому регулярному выражению, то проверка набора открытых данных завершается с ошибкой «идентификатор набора открытых данных указан неверно».
6.2.1.2 Проверка наличия набора в реестре
Набор проверяется на наличие в реестре наборов открытых данных. Так как проверка набора производиться в контексте реестра наборов открытых данных, то результаты проверки реестра наборов открытых данных уже известны. Поэтому производится проверка на наличие набора с таким идентификатором в результатах проверки реестра наборов открытых данных. Если набора с таким идентификатором не существует, то проверка набора открытых данных завершается с ошибкой «идентификатор набора открытых данных указан неверно».
6.2.2 Проверка перед парсингом
6.2.2.1 Проверка страницы набора открытых данных
Перед проверкой набора открытых данных производится проверка страницы набора открытых данных. Если запрос к странице набора открытых данных вернул HTTP статус от 400 и выше, то проверка набора открытых данных завершается с ошибкой «страница набора открытых данных не обнаружена».
6.2.3 Парсинг данных
В текущей версии библиотеки поддерживаются следующие форматы: CSV и RDFa.
Данные набора открытых данных получаются при помощи парсера, алгоритм которого описан в разделе «Парсеры». Приоритетным является формат RDFa, поэтому сначала производится попытка получить данные наборов открытых данных в формате RDFa при помощи парсера RDFa. Если данные в формате RDFa не получены или не валидны, то дополнительно производится попытка получить данные набора открытых данных в формате CSV при помощи парсера CSV.
6.2.3.1 Парсинг данных в формате RDFa
Страница набора открытых данных в формате RDFa должна быть расположена по ссылке в формате http:///opendata/1234567890-identifer, где http:/// это доменное имя проверяемого сайта, переданное в качестве аргумента реестра наборов открытых данных в контексте которого производится проверка набора открытых данных, а 1234567890-identifier это идентификатор набора открытых данных, переданный в качестве аргумента набора открытых данных. Данная страница парсится с помощью парсера RDFa. Если парсер RDFa закончил работу с ошибкой, то считается, что формат RDFa не обнаружен и парсинг данных в формате RDFa завершается с ошибкой «формат RDFa не обнаружен». Иначе, парсер возвращает структурированный массив данных со всеми содержащимися объектами RDFa на странице и их свойствами, с которыми и происходит дальнейшая работа.
Далее проверяется наличие свойства dc:identifier у объекта http:///opendata/1234567890-identifer и его значения. Значением этого свойства является идентификатор набора, который должен быть равен текущему аргументу. Если данного свойства нет или значение свойства не равно текущему аргументу, то считается, что формат RDFa не обнаружен и парсинг данных в формате RDFa завершается с ошибкой «формат RDFa не обнаружен».
Далее проверяется наличие свойств dc:title, dc:description, dc:owner, dc:created, dc:valid, dc:subject, dc:publisher, dc:source у объекта http:///opendata/1234567890-identifer. Если эти свойства не обнаружены, то считается, что формат RDFa не обнаружен и парсинг данных в формате RDFa завершается с ошибкой «формат RDFa не обнаружен».
6.2.3.2 Парсинг данных в формате CSV
Файл набора открытых данных в формате CSV должен быть расположен по ссылке в формате http:///opendata/124567890-identifier. csv, где http:/// это доменное имя проверяемого сайта, переданное в качестве аргумента реестра наборов открытых данных в контексте которого производится проверка набора открытых данных, а 1234567890-identifier это идентификатор набора открытых данных, переданный в качестве аргумента набора открытых данных. Данный файл парсится с помощью парсера CSV. Если парсер CSV закончил работу с ошибкой, то считается, что формат CSV не обнаружен и парсинг данных в формате CSV завершается с ошибкой «формат CSV не обнаружен». Иначе парсер возвращает двумерный массив данных, с которым и происходит дальнейшая работа.
Далее анализируются данные массива. Первая строка массива определяется как строка с заголовками. Остальные строки определяются как свойства набора открытых данных. Вторая строка определяется как идентификатор набора, третья строка определяется как заголовок набора, четвертая строка определяется как описание набора, пятая строка определяется как владелец набора, двенадцатая строка определяется как дата создания набора, пятнадцатая строка определяется как дата актуальности набора, шестнадцатая строка определяется как ключевые слова набора. Третья колонка определяется как колонка содержащая значения свойств набора открытых данных.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


