Автоматический анализ результатов поисковых запросов к базе данных в Hague Express

Изучение правил Гаагского соглашения. Создание программы, выводящей актуальную информацию о текущем статусе выбранной регистрации в договаривающейся стороне. Недостатки и особенности базы данных Hague Express. Составление алгоритма поисковых запросов.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 04.12.2019
Размер файла 2,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

wait_list = [x for x in all_list if x not in mix_list]

else:

ref_list = ref_list + pi_l

wait_list = [x for x in all_list if x not in ref_list]

else:

if prot_list != []:

if ref_list != []:

ref_list = [x for x in ref_list if x not in prot_list]

mix_list = ref_list + prot_list

wait_list = [x for x in all_list if x not in mix_list]

else:

wait_list = [x for x in all_list if x not in prot_list]

else:

wait_list = [x for x in all_list if x not in ref_list]

return prot_list, prot_date, ref_list, ref_date, wait_list

def search_images():

image_bar = soup.find('div', class_='text imageContainer')

images = image_bar.find_all('div', class_='imageBox')

images_urls = []

for image in images:

if image.find('img')['src'].split('.')[-1].strip() == 'jpg':

image_link = 'https://www.wipo.int/' + image.find('img')['src']

images_urls.append(image_link)

else:

pass

return images_urls

def download_images(image_urls):

images_path = []

if image_urls != []:

for image in image_urls:

response = requests.get(image)

image_split = image.split("/")

image_dir_path = "hagueimages/DM_%s" % (image_split[-2])

if not os.path.exists(image_dir_path):

os.mkdir(image_dir_path)

image_path = image_dir_path + "/%s" %(image_split[-1])

with open(image_path, "wb") as fd:

fd.write(response.content)

images_path.append(image_path)

else:

pass

return images_path

# noinspection PyBroadException

def download_pdf(id_reg, country):

id_file = id_reg.replace("/", "_")

pdf_paths = []

country_tables = soup.find_all('div', class_='transaction countrySpecific ' + country)

if country_tables != []:

for country_table in country_tables:

condition = country_table.find('a', class_='pdfLink')['href'].split('/')[1]

if condition == 'romarin':

pdf_url = 'https://www.wipo.int/documentaccess/' + country_table.find('a', class_='pdfLink')['href'].split('/')[2]

elif condition == 'idpub':

pdf_url = 'https://www.wipo.int' + country_table.find('a', class_='pdfLink')['href']

else:

pdf_url = ''

try:

response = requests.get(pdf_url)

except Exception as e:

raise e

pdf_type = country_table.find('h2').text.split(':')[0].replace(" ", "_")

pdf_path = "haguepdf/%s-%s-%s.pdf" % (id_file, country, pdf_type)

with open(pdf_path, "wb") as fd:

fd.write(response.content)

pdf_paths.append(pdf_path)

return pdf_paths

def pdf_to_images(pdf_paths):

pdf_paths_images = []

for pdf_path in pdf_paths:

pdf_path_images = []

image_dir_path = "haguepdf/pdf_images_" + pdf_path.split('/')[1].split('.')[0]

if not os.path.exists(image_dir_path):

os.mkdir(image_dir_path)

pages = convert_from_path(pdf_path, 600)

pdf_image_path = image_dir_path + '/page_'

count = 0

for number, page in enumerate(pages):

page.save(pdf_image_path + str(number) + '.jpg', 'JPEG')

pdf_path_images.append(pdf_image_path + str(number) + '.jpg')

count += 1

if count == 3:

break

pdf_paths_images.append(pdf_path_images)

return pdf_paths_images

def images_to_text(pdf_paths_images):

pdf_texts = []

for pdf_path_images in pdf_paths_images:

text = ''

for pdf_path_image in pdf_path_images:

pdf_image = Image.open(pdf_path_image)

text += pytesseract.image_to_string(pdf_image, lang="eng")

pdf_texts.append(text)

return pdf_texts

def file_analysis(pdf_texts, pdf_paths, amount_of_designs, n_all_l):

doc_types = []

protection_list = []

refusal_list = []

grounds_for_refusal = ''

number_pdf_text = 0

for pdf_path in pdf_paths:

doc_type = pdf_path.split('/')[1].split('.')[0].split('-')[2].replace('_', ' ')

doc_types.append(doc_type)

for pdf_text in pdf_texts:

if (doc_types[number_pdf_text] == 'Refusal' or

doc_types[number_pdf_text] == 'Partial Refusal'):

print(pdf_text)

start = 'The scope of the refusal:'

end = 'IV.'

start_ind = pdf_text.find(start) + len(start)

end_ind = pdf_text.find(end)

pdf_subtext = pdf_text[start_ind:end_ind]

scope_of_refusal = pdf_subtext.find('all industrial designs')

ground_start_ind = pdf_text.find('Grounds for refusal:')

print(ground_start_ind)

ground_end_ind = pdf_text.find('\nV.')

print(ground_end_ind)

grounds_for_refusal = pdf_text[ground_start_ind:ground_end_ind]

print(grounds_for_refusal)

if scope_of_refusal == -1:

refusal_list += re.findall(r'\b\d+\b', pdf_subtext)

else:

refusal_list.append('all')

number_pdf_text += 1

elif (doc_types[number_pdf_text] == 'Statement of Grant of Protection' or

doc_types[number_pdf_text] == 'Partial Statement of Grant of Protection'):

start = 'The scope of the protection:'

end = 'IV.'

start_ind = pdf_text.find(start) + len(start)

end_ind = pdf_text.find(end)

pdf_subtext = pdf_text[start_ind:end_ind]

scope_of_protection = pdf_subtext.find('all industrial designs')

if scope_of_protection == -1:

protection_list += re.findall(r'\b\d+\b', pdf_subtext)

else:

protection_list.append('all')

number_pdf_text += 1

all_list = []

if (n_all_l is not None):

all_list = n_all_l

else:

count = int(amount_of_designs)

for i in range(count):

all_list.append(str(i+1))

if protection_list != []:

if ('all' in protection_list):

protection_list = all_list[:]

if refusal_list != []:

if ('all' in refusal_list):

refusal_list = all_list[:]

protection_list = [x for x in protection_list if x in all_list]

refusal_list = [x for x in refusal_list if x in all_list]

if protection_list != []:

if refusal_list != []:

refusal_list = [x for x in refusal_list if x not in protection_list]

mix_list = refusal_list + protection_list

wait_list = [x for x in all_list if x not in mix_list]

else:

wait_list = [x for x in all_list if x not in protection_list]

else:

wait_list = [x for x in all_list if x not in refusal_list]

return refusal_list, protection_list, grounds_for_refusal, wait_list

def date_of_protection(registration_date, w_l, act_1999):

start_date = registration_date + relativedelta(months=+6)

end_date = registration_date + relativedelta(months=+12)

today_date = datetime.date(datetime.today())

check_new = True

if w_l == ['reg']:

put_in = 'This registration is'

else:

put_in = 'These designs are'

if w_l != []:

if act_1999:

if today_date < start_date:

protection_date = '%s still not protected, period in which the decision will be made: from ' % (put_in) + str(start_date) + 'till ' + str(end_date)

elif start_date < today_date < end_date:

if country_ == 'RU':

protection_date_start = registration_date + a[country_]

else:

protection_date_start = start_date

protection_date_end = end_date

protection_date = '%s either protected since ' % (put_in) + str(protection_date_start) + ' or the decision will be made: from ' + str(today_date) + ' till ' + str(protection_date_end)

else:

if country_ == 'RU':

protection_date_start = registration_date + a[country_]

else:

protection_date_start = end_date

protection_date = '%s protected since ' % (put_in) + str(protection_date_start)

else:

if today_date < start_date:

protection_date = '%s still not protected, period in which the decision will be made: in ' % (put_in) + str(start_date)

else:

if check_new:

try:

new_dict[country_]

protection_date_start = registration_date + new_dict[country_]

except KeyError:

protection_date_start = start_date

protection_date = '%s protected since ' % (put_in) + str(protection_date_start)

else:

protection_date = '%s protected since ' % (put_in) + str(registration_date)

else:

protection_date = ''

return protection_date

def image_list(p_l, r_l, w_l, images_p):

protection_image_list = []

refusal_image_list = []

wait_image_list = []

if images_p != []:

for image in images_p:

design_number = image.split('/')[-1].split('_')[0][1:]

number_of_design = ''

flag = False

for number in design_number:

if number != '0':

flag = True

if flag:

number_of_design += number

if (number_of_design in p_l):

protection_image_list.append(image)

elif (number_of_design in r_l):

refusal_image_list.append(image)

elif (number_of_design in w_l):

wait_image_list.append(image)

else:

pass

else:

pass

return protection_image_list, refusal_image_list, wait_image_list

def print_function(r_num, reg_date, exp_date, loc, holder, des_n, p_l, p_d, r_l, r_d, w_l, w_d, p_i, r_i, w_i):

print('Registration number:', r_num)

print('Registration date:', reg_date)

print('Expiration date:', exp_date)

print('Locarno class:', loc)

print('Holder name and address:')

print(holder)

print('Current number of designs: ', des_n)

print('\n')

if p_l != []:

print('These numbers of designs are protected:')

p_l_text = 'No(s): '

for i in p_l:

p_l_text += i + ', '

p_l_text = p_l_text[:-2]

print(p_l_text)

print('Since ', p_d)

if p_i != []:

for image in p_i:

im = Image(filename = image)

display(im)

else:

pass

if r_l != []:

print('These numbers of designs are refused:')

r_l_text = 'No(s): '

for i in r_l:

r_l_text += i + ', '

r_l_text = r_l_text[:-2]

print(r_l_text)

print('Since ', r_d)

if r_i != []:

for image in r_i:

im = Image(filename = image)

display(im)

else:

pass

if w_l != []:

w_l_text = 'No(s): '

for i in w_l:

w_l_text += i + ', '

w_l_text = w_l_text[:-2]

print(w_l_text)

print('Since ', w_d)

if w_i != []:

for image in w_i:

im = Image(filename = image)

display(im)

else:

pass

return True

def print_function_date_protection(r_num, reg_date, exp_date, loc, holder, des_n, prot_date, im_path):

print('Registration number:', r_num)

print('Registration date:', reg_date)

print('Expiration date:', exp_date)

print('Locarno class:', loc)

print('Holder name and address:')

print(holder)

print('Current number of designs: ', des_n)

print('\n')

print(prot_date)

if im_path != []:

for image in im_path:

im = Image(filename = image)

display(im)

else:

pass

return True

def print_function_RU(r_num, reg_date, exp_date, loc, holder, des_n, p_l, r_l, ground, w_l, w_d, p_i, r_i, w_i):

print('Registration number:', r_num)

print('Registration date:', reg_date)

print('Expiration date:', exp_date)

print('Locarno class:', loc)

print('Holder name and address:')

print(holder)

print('Current number of designs: ', des_n)

print('\n')

if p_l != []:

print('These numbers of designs are protected:')

p_l_text = 'No(s): '

for i in p_l:

p_l_text += i + ', '

p_l_text = p_l_text[:-2]

print(p_l_text)

if p_i != []:

for image in p_i:

im = Image(filename = image)

display(im)

else:

pass

if r_l != []:

print('These numbers of designs are refused:')

r_l_text = 'No(s): '

for i in r_l:

r_l_text += i + ', '

r_l_text = r_l_text[:-2]

print(r_l_text)

print(ground)

if r_i != []:

for image in r_i:

im = Image(filename = image)

display(im)

else:

pass

if w_l != []:

w_l_text = 'No(s): '

for i in w_l:

w_l_text += i + ', '

w_l_text = w_l_text[:-2]

print(w_l_text)

print(w_d)

if w_i != []:

for image in w_i:

im = Image(filename = image)

display(im)

else:

pass

return True

a = {'RU': timedelta(days=0)}

new_dict = {'RU': timedelta(days=0)}

headers = {

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15'

}

link_, con_parties_, locarno_ = selenium_search_FX(selenium_id_)

if link_ != '':

source = requests.get(link_, headers=headers).text

soup = BeautifulSoup(source, 'lxml')

date_expiration_ = check_expired_registration()

registration_act_1999 = check_registration()

if date_expiration_ == '': # Проверка истек ли срок международной регистрации или нет

r_date, e_date, holder_inf = get_dates_and_name() # Дата регистрации, дата истечения регистрации, информация о владельце

warning_ = check_warning()

if warning_ is not None: # Проверка наличия предупреждающего окна о возможных неточностях текущего статуса

renewal_list_, new_expiration_date = renewal_list_gen()

if new_expiration_date is None: # Проверка наличия обновлённой даты

pass

else:

e_date = new_expiration_date

invalidation_list_ = invalidation_list_gen() # Список стран, признавших регистрацию недействительной

renunciation_list_ = renunciation_list_gen() # Список, хранящий информацию о каком обёме отказа исходит со стороны клиента

result_parties_ = make_new_contr_p_list(renewal_list_, invalidation_list_, renunciation_list_, con_parties_) # Создание списка(строчки) Договаривающихся сторон

con_parties_ = result_parties_

new_holder_ = check_change_n_and_ownership() # информация о владельце, если были изменения

if new_holder_ != '':

holder_inf = new_holder_

else:

pass

else:

pass

renunciation_list_ = renunciation_list_gen()

if 'This registration was renounced' not in renunciation_list_:

print(con_parties_)

country_ = input()

number_of_designs = get_number_designs()

new_all_list, current_des_n = partial_renewal_n_des_check()

if (current_des_n == 0):

current_des_n = number_of_designs

else:

pass

country_in_scope = (country_ in con_parties_)

if country_in_scope:

image_urls_ = search_images()

images_path_ = download_images(image_urls_)

country_notifications = find_all_about_country()

check_list_ = []

check_date_ = datetime.strptime('01 01 1950', '%d %m %Y').date()

for country_table_ in country_notifications:

if country_table_ != [] and country_table_ != check_date_:

check_list_.append(country_table_)

protection_date_ = ''

if check_list_ == []:

protection_date_ = date_of_protection(r_date, ['reg'], registration_act_1999)

print_function_date_protection(id_, r_date, e_date, locarno_, holder_inf, current_des_n, protection_date_, images_path_)

else:

if country_ != 'RU':

fprotection_list, fprotection_date, frefusal_list, frefusal_date, fwait_list = data_analysis(*country_notifications, number_of_designs, new_all_list)

protection_images_, refusal_images_, wait_images_ = image_list(fprotection_list, frefusal_list, fwait_list, images_path_)

fwait_date = date_of_protection(r_date, fwait_list, registration_act_1999)

to_print = id_, r_date, e_date, locarno_, holder_inf, current_des_n, fprotection_list, fprotection_date, frefusal_list, frefusal_date, fwait_list, fwait_date, protection_images_, refusal_images_, wait_images_

print_function(*to_print)

else:

pdf_paths_ = download_pdf(id_, country_)

pdf_path_images_ = pdf_to_images(pdf_paths_)

pdf_texts_ = images_to_text(pdf_path_images_)

refusal_RU, protection_RU, grounds, wait_RU = file_analysis(pdf_texts_, pdf_paths_, number_of_designs, new_all_list)

wait_date_RU = date_of_protection(r_date, wait_RU, registration_act_1999)

protection_images_RU, refusal_images_RU, wait_images_RU = image_list(protection_RU, refusal_RU, wait_RU, images_path_)

to_print = id_, r_date, e_date, locarno_, holder_inf, current_des_n, protection_RU, refusal_RU, grounds, wait_RU, wait_date_RU, protection_images_RU, refusal_images_RU, wait_images_RU

print_function_RU(*to_print)

else:

print("There is not such a Contracting Party")

else:

print('Registration number: ', id_)

print('This registration was renounced')

else:

print('Registration number: ', id_)

print(date_expiration_)

else:

pass

Размещено на Allbest.ru

...

Подобные документы

  • Регистрация и вход в Oracle Application Express, структура и взаимосвязь элементов базы данных. Создание запросов, основы для приложения, отчетов, диаграммы, главной страницы. Формирование руководства пользователя и листинг разработанной программы.

    курсовая работа [2,8 M], добавлен 18.11.2013

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Сущность базы данных. Процесс построения концептуальной модели. Построение реляционной модели, создание ключевого поля. Процесс нормализации. Проектирование базы данных в ACCESS. Порядок создание базы данных. Создание SQL запросов и работа в базе данных.

    курсовая работа [185,6 K], добавлен 08.11.2008

  • Разработка базы данных, содержащей информацию, необходимую Государственной инспекции по маломерным судам для выдачи билетов владельцам судов. Особенности создания файла и диаграмм базы данных, SQL-запросов. Объекты информационной модели и их свойства.

    курсовая работа [1,3 M], добавлен 24.10.2012

  • Рассмотрение основных этапов проектирования базы данных "Расписание": создание информационных таблиц, определение схем для связи данных в реестрах. Изучение методов организации форм (режимы автоматический, Мастер, конструктор), запросов и отчетов.

    курсовая работа [1,7 M], добавлен 06.02.2010

  • Создание базы данных по теме "Склад фруктов" в СУБД Microsoft Access. Проектирование запросов по числовым, символьным, логическим критериям и сложных запросов, состоящих из комбинаций приведенных типов данных. Создание форм и таблиц, конструктор отчетов.

    курсовая работа [869,2 K], добавлен 04.11.2014

  • Общая характеристика и состав информационных запросов к проектируемой базе данных, требования к ней и внутренняя структура, принципы нормализации и разработка логической модели. Создание таблиц и связей между ними. Язык структурированных запросов.

    курсовая работа [985,6 K], добавлен 22.05.2014

  • Изучение классификации поисковых средств по В.В. Дудихину. Поиск информации с помощью поисковых ресурсов. Формирование запросов. Использование ключевых слов. Индексация документов, размещенных на различных серверах. Зарубежные лидеры поисковых систем.

    презентация [775,3 K], добавлен 10.03.2015

  • Формирование основных таблиц базы данных деканата и устанавливание к ним ключей. Заполнение баз необходимыми сведениями. Формулировка схем данных форм и запросов. Настройка некоторых запросов по своим свойствам. Создание форм через "мастера форм".

    контрольная работа [1,0 M], добавлен 07.01.2011

  • Структура модели на языке Express. Правила записи супертипов и подтипов. Разработка информационных моделей в рамках концепции CALS. Типы данных в языке Express. Структура портативного зарядного устройства ЗарядON. Изображение сущности на языке Express-G.

    курсовая работа [487,9 K], добавлен 18.01.2013

  • Проектирование базы данных, содержащей информацию, которая всесторонне характеризует российский рынок медицинского оборудования. Описание атрибутов сущностей и связей, отраженных в разработанной ER-модели. Разработка отчетов, форм, запросов в базе данных.

    курсовая работа [3,2 M], добавлен 19.06.2015

  • Авторизация с каталогами проектирования базы данных магазина. Задачи базы данных: учет всех товаров, поиск и выдача данных о клиентах, адрес, телефоны, цена и наличие товара. Этапы проектирования базы данных. Схема данных, создание запросов и их формы.

    реферат [1,6 M], добавлен 22.10.2009

  • Компоненты реляционной базы данных Microsoft Access. Создание структуры таблиц и определение связей между ними. Проектирование форм для сводных таблиц и запросов с помощью конструктора окон. Разработка и создание автоотчетов и запросов на выборку данных.

    реферат [3,3 M], добавлен 29.01.2011

  • Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access.

    курсовая работа [2,1 M], добавлен 17.06.2013

  • Концептуальная модель, спецификация атрибутов. Диаграмма "сущность-связь". Пакет Sybase PowerDesigner. Разработка SQL-скрипта создания разрабатываемой базы данных. Создание и заполнение базы данных. Выполнение запросов на чтение, модификацию и удаление.

    курсовая работа [2,3 M], добавлен 24.02.2014

  • Разработка структуры базы данных в приложении Access. Создание запросов. Создание отчета для эффективного представления данных в печатном формате. Панель элементов, используемых при создании формы. Обработка данных с помощью языка запросов в SQL.

    курсовая работа [1,7 M], добавлен 09.05.2012

  • Изучение реляционной модели данных. Выявление потребности задач в данных и определение состава и структуры информационных объектов. Построение концептуальной модели предметной области. Создание форм, запросов и отчетов с помощью конструктора запросов.

    курсовая работа [6,3 M], добавлен 09.10.2021

  • Базы данных и системы управления базами данных. Физическое размещение и сортировка записей. Основные виды баз данных. Создание базы данных "Домашняя библиотека" в приложении Microsoft Access. Создание в базе данных запросов и скорость выбора информации.

    курсовая работа [3,2 M], добавлен 07.05.2013

  • Системный анализ и анализ требований к базе данных. Особенности создания отчетов, запросов и форм в Visual Studio 2012. Программная реализация ER-диаграммы. Создание инфологической, логической и физической модели базы данных. Генерация ее в SQL Server.

    курсовая работа [1,0 M], добавлен 22.11.2012

  • Понятие и классификация поисковых систем, история их развития и структурные элементы. Характеристика существующих моделей поиска, анализ его качества. Особенности обработки запроса поисковой системой, подготовки базы данных и процесса выдачи результатов.

    курсовая работа [2,6 M], добавлен 15.04.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.