forked from MauricioFGM23/VarysNupitec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
buscador.py
116 lines (83 loc) · 3.75 KB
/
buscador.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import os
import scrapy
from scrapy.crawler import CrawlerProcess
dados=[]
def save_list_to_file(n_prot, filename):
with open(filename, 'w') as file:
for item in n_prot:
file.write(f'{item}\n')
def subs(entrada, saida):
try:
# Abre o arquivo de entrada no modo leitura
with open(entrada, 'r') as arquivo_entrada:
# Lê o conteúdo do arquivo
conteudo = arquivo_entrada.read()
# Substitui "-" por " "
conteudo_modificado = conteudo.replace("-", " ")
# Abre o arquivo de saída no modo escrita
with open(saida, 'w') as arquivo_saida:
# Escreve o conteúdo modificado no arquivo de saída
arquivo_saida.write(conteudo_modificado)
print("Substituição concluída com sucesso.")
except FileNotFoundError:
print(f"O arquivo '{entrada}' não foi encontrado.")
except Exception as e:
print(f"Ocorreu um erro: {str(e)}")
def check():
class InpiSpider(scrapy.Spider):
name = "inpi"
start_urls = ["https://busca.inpi.gov.br/pePI/servlet/LoginController?action=login"]
def parse(self, response):
# Acessar a página de Patentes
next_page_link = response.css('area[data-mce-href="menu-servicos/patente"]::attr(href)').get()
yield response.follow(next_page_link, callback=self.parse_next_page)
def parse_next_page(self, response):
# Selecionar o CPF/CNPJ do Titular e inserir o CNPJ no campo
yield scrapy.FormRequest.from_response(
response,
formdata={"Coluna": "CpfCnpjDepositante", "ExpressaoPesquisa": "00038174000143", "RegisterPerPage":"100"},
callback=self.extract_search
)
def extract_search(self, response):
# Extrair e salvar o texto dos seletores na lista "dados"
elementos_texto = response.css('a')
for elemento in elementos_texto:
texto = elemento.css('a[class="visitado"]::text').get()
if texto:
dados.append(texto.strip())
next_page_link = response.css('a:contains("Próxima»")::attr(href)').get()
yield response.follow(next_page_link, callback=self.extract_search2)
def extract_search2(self, response):
elementos_texto = response.css('a')
for elemento in elementos_texto:
texto = elemento.css('a[class="visitado"]::text').get()
if texto:
dados.append(texto.strip())
next_page_link = response.css('a:contains("Próxima»")::attr(href)').get()
yield response.follow(next_page_link, callback=self.extract_search3)
def extract_search3(self, response):
elementos_texto = response.css('a')
for elemento in elementos_texto:
texto = elemento.css('a[class="visitado"]::text').get()
if texto:
dados.append(texto.strip())
print("número de proteções: ",len(dados))
# Inciar CrawlerProcess
process = CrawlerProcess()
# Rodar o spider
process.crawl(InpiSpider)
# Iniciar o processo
process.start()
return dados
n_prot = check()
if not n_prot:
print("\Algo deu errado!!!\n")
else:
print ("\nQuantidade de novas proteções: ", len(n_prot))
print("Proteções Identificadas: ",n_prot, "\n")
dir_path = os.path.dirname(os.path.realpath(__file__))
lista_prot = os.path.join(dir_path, 'lista_prot.txt')
save_list_to_file(n_prot, lista_prot)
arquivo_entrada = lista_prot
arquivo_saida = lista_prot
subs(arquivo_entrada, arquivo_saida)