Автоматический анализ результатов поисковых запросов к базе данных в 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