Мне нужно проанализировать необработанные записи WHOIS в полях. Нет единого согласованного формата для необработанных данных, и мне нужно поддерживать все возможные форматы (есть около 40 уникальных форматов, о которых я знаю). Для примера, вот выдержки из 3-х различных WHOIS записей необработанные данные:Автоматический анализ данных whois
Created on: 2007-01-04
Updated on: 2014-01-29
Expires on: 2015-01-04
Registrant Name: 0,75 DI VALENTINO ROSSI
Contact: 0,75 Di Valentino Rossi
Registrant Address: Via Garibaldi 22
Registrant City: Pradalunga
Registrant Postal Code: 24020
Registrant Country: IT
Administrative Contact Organization: Giorgio Valoti
Administrative Contact Name: Giorgio Valoti
Administrative Contact Address: Via S. Lucia 2
Administrative Contact City: Pradalunga
Administrative Contact Postal Code: 24020
Administrative Contact Country: IT
Administrative Contact Email: [email protected]
Administrative Contact Tel: +39 340 4050596
---------------------------------------------------------------
Registrant :
onse telecom corporation
Gangdong-gu Sangil-dong, Seoul
Administrative Contact :
onse telecom corporation [email protected]
Gangdong-gu Sangil-dong, Seoul,
07079976571
Record created on 19-Jul-2004 EDT.
Record expires on 19-Jul-2015 EDT.
Record last updated on 15-Jul-2014 EDT.
---------------------------------------------------------------
Registrant:
Name: markaviva comunica??o Ltda
Organization: markaviva comunica??o Ltda
E-mail: [email protected]
Address: RUA FERNANDES LIMA 360 sala 03
Address: 57300070
Address: ARAPIRACA - AL
Phone: 55 11 40039011
Country: BRASIL
Created: 20130405
Updated: 20130405
Administrative Contact:
Name: markaviva comunica??o Ltda
Organization: markaviva comunica??o Ltda
E-mail: [email protected]
Address: RUA FERNANDES LIMA 360 sala 03
Address: 57300070
Address: ARAPIRACA - AL
Phone: 55 11 40039011
Country: BRASIL
Created: 20130405
Updated: 20130405
Как вы можете видеть, нет никакого повторяющийся узор. Мне нужно извлечь такие поля, как «Имя регистратора», «Адрес регистрации», «Имя администратора», «Город администратора» и т. Д.
Сначала я попробовал базовый метод извлечения поля, основанный на разделении строка в первом найденном двоеточии, но она работает только тогда, когда префиксы строк различны, инъективны (нет двух строк с одним и тем же префиксом) и, ну, разделены двоеточием ... (что не всегда так)
Теперь я могу просматривать форматы один за другим и пытаться создать регулярное выражение для каждого из них, но для этого потребуется много времени, чего у меня нет. Интересно, есть ли способ автоматически обрабатывать и обрабатывать блоки текста как контекстный «кусок» (в отношении их интервала и общих повторяющихся слов, таких как «регистратор» или «админ») и анализировать их соответственно. НЛП Может быть?
Буду рад услышать любые идеи, так как я здесь как-то взволнован. Thanks
Там нет запятой (;) в вашем коде, только двоеточие (:) –
справа вы :-) отредактированные соответственно, спасибо за исправление меня. – KidCrippler
Как вы уже заявили, проблема заключается в отсутствии стандарта для записей WHOIS. Это было бы прекрасно, если бы не было уже более 1000 TLD (постоянно растущее число). Единственный верный способ разбора каждого из форматов правильно и последовательно состоит в том, чтобы написать парсер, настроенный для каждого формата. Среди таких вопросов, как политика ограничения скорости, черные списки и изменения формата, разные серверы могут возвращать данные по-разному даже для одного и того же ДВУ. После попытки создать собственное решение какое-то время я обратился к сервису [хостинга и обслуживания] (https://jsonwhoisapi.com). – sousdev