feat(library): add vocation filter, normalize categories, improve grid layout
Added vocation state and included it in query string builder, updated onFilter to accept a vocation parameter, improved grid layout with grid flow classes, normalized category names for consistent item icons, and refined stats mapping to handle type safety.
This commit is contained in:
1 parent
44d7f8ce81
commit
2b790d8eb4
19 files changed
+2638
-173
No files matched your search
@@ -3,6 +3,7 @@ Script principal para executar o spider com Selenium
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
import argparse
|
||||
|
||||
# Adiciona o diretório raiz ao path do Python
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
@@ -10,26 +11,92 @@ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
from tibiawiki.spiders.selenium_spider import SeleniumSpider
|
||||
|
||||
|
||||
def parse_arguments():
|
||||
"""
|
||||
Parse argumentos da linha de comando
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
description='TibiaWiki Scraper - Extrai dados e imagens do TibiaWiki',
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="""
|
||||
Exemplos de uso:
|
||||
# Modo completo (todas as categorias)
|
||||
python main_selenium.py
|
||||
|
||||
# Link específico
|
||||
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
|
||||
|
||||
# Múltiplos links via arquivo
|
||||
python main_selenium.py --file links.txt
|
||||
"""
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--url',
|
||||
type=str,
|
||||
help='URL específica para fazer scraping (ex: --url "https://www.tibiawiki.com.br/wiki/Espadas")'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--file',
|
||||
type=str,
|
||||
help='Arquivo TXT com múltiplas URLs (uma por linha)'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--headless',
|
||||
action='store_true',
|
||||
help='Executar Chrome em modo headless (sem interface gráfica)'
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Validação: apenas um modo por vez
|
||||
if args.url and args.file:
|
||||
parser.error("Erro: não é possível usar --url e --file ao mesmo tempo. Escolha apenas um.")
|
||||
|
||||
return args
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Executa o spider com Selenium
|
||||
"""
|
||||
args = parse_arguments()
|
||||
|
||||
print("=" * 80)
|
||||
print("TibiaWiki Scraper - Selenium Edition")
|
||||
print("=" * 80)
|
||||
|
||||
# Determina modo de operação
|
||||
if args.url:
|
||||
print("\nModo: Link Específico")
|
||||
print(f"URL: {args.url}")
|
||||
elif args.file:
|
||||
print("\nModo: Arquivo de Links")
|
||||
print(f"Arquivo: {args.file}")
|
||||
else:
|
||||
print("\nModo: Completo (todas as categorias)")
|
||||
print("\nO processo pode demorar de 30min a 1h dependendo da quantidade de categorias.")
|
||||
|
||||
print("\nEste scraper usa Selenium para contornar bloqueios anti-bot.")
|
||||
print("Um navegador Chrome será aberto automaticamente.")
|
||||
print("\nO processo pode demorar de 30min a 1h dependendo da quantidade de categorias.")
|
||||
print("Aguarde...\n")
|
||||
|
||||
# Cria e executa spider
|
||||
# Cria spider
|
||||
spider = SeleniumSpider(
|
||||
db_path='data/tibiawiki.db',
|
||||
images_path='data/images',
|
||||
headless=False # Mostra o navegador
|
||||
headless=args.headless
|
||||
)
|
||||
|
||||
spider.run()
|
||||
# Executa no modo apropriado
|
||||
if args.url:
|
||||
spider.run(single_url=args.url)
|
||||
elif args.file:
|
||||
spider.run(urls_file=args.file)
|
||||
else:
|
||||
spider.run()
|
||||
|
||||
print("\n" + "=" * 80)
|
||||
print("Extração concluída!")
|
||||
|
||||
Reference in new issue
Block a user