forked from ericbrasiln/twitterscraper-LABHD
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtt_user.py
98 lines (88 loc) · 3.28 KB
/
tt_user.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
import twint
from datetime import datetime
import time
import os
data = datetime.now()
timestr = time.strftime("%Y%m%d")
buscas = []
print('-'*70)
print('-Script para raspagem de dados do Twitter-\n'
'Defina os parâmetros para sua busca.\n'
'A saída gera um relatório da busca e um arquivo CSV com os dados.\n')
print('-'*70)
quantidadeDeBuscas = input('Digite o número de buscas a ser realizada : ')
parametro = input('Busca por termo (1) ou por usuário (2)? ')
c = twint.Config() # configurar os parâmatros de busca do twint
for termo in range(int(quantidadeDeBuscas)):
if parametro == '1':
busca = input('Digite o termo da busca: ')
buscas.append(busca)
c.Search = "'"+busca+"'"
c.Username = None
nome = busca+'_'+timestr
c.Output = os.path.join('DATA', nome) # pasta de saída
if not os.path.exists(c.Output): # se a pasta não existe, cria a pasta DATA
os.makedirs(c.Output)
elif parametro == '2':
busca = input('Digite o nome do usuário: ')
buscas.append(busca)
c.Search = None
c.Username = busca
nome = 'user_'+c.Username+'_'+timestr
c.Output = os.path.join('DATA', nome)
if not os.path.exists(c.Output):
os.makedirs(c.Output)
else:
print('Reinicie o script e escolha a opção da busca.')
exit()
lang = input('Digite o idioma da busca (pt, en, es, fr, todos): ')
if lang == 'todos':
c.Lang = None
else:
c.Lang = lang
período = input('Digite a data e hora de início da busca (AAAA-MM-DD HH:MM:SS)'
' ou deixe em branco para ignorar esse parâmetro: ')
if período == '':
c.Since = None
else:
c.Since = período
períodoFinal = input('Digite a data e hora de final da busca (AAAA-MM-DD HH:MM:SS)'
' ou deixe em branco para ignorar esse parâmetro: ')
if períodoFinal == '':
c.Until = None
else:
c.Until = períodoFinal
c.Store_csv = True # define o arquivo final como csv
c.Tabs = True # define que a separação das colunas do CSV serão através de tabulação
c.Hide_output = True # esconde a raspagem em tempo real
# imprime o resumo dos parâmetros
print('-'*70)
for item in buscas:
print(f'Iniciando busca para : {item}')
if parametro == '1':
c.Search = "'"+item+"'"
c.Username = None
nome = item+'_'+timestr
c.Output = os.path.join('DATA', nome) # pasta de saída
# se a pasta não existe, cria a pasta DATA
if not os.path.exists(c.Output):
os.makedirs(c.Output)
elif parametro == '2':
c.Search = None
c.Username = item
nome = 'user_'+c.Username+'_'+timestr
c.Output = os.path.join('DATA', nome)
# criação do relatório com os dados da busca:
reportPath = os.path.join(c.Output, 'relatório')
relatório = open(f'{reportPath}_{nome}.txt', 'w')
relatório.write(
'-Raspagem do Twitter-\n'
f'Termo da busca: {c.Search};\n'
f'Usuário buscado: {c.Username};\n'
f'Data e hora da busca: {data}; \n'
f'Idioma da busca: {c.Lang};\n'
f'Data do início da busca: {c.Since};\n'
f'Data do final da busca: {c.Until};\n'
f'Nome da pasta: {nome}.')
relatório.close
twint.run.Search(c)