#! /bin/env python3 import sys from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
mouse#
from selenium.webdriver.common.action_chains import ActionChains#
objeto_pesquisa_arg = str(None) try: objeto_pesquisa_arg = sys.argv[1]
except: print(‘Informe o nome do arquivo ou pacote.’) sys.exit(1)
Configurando o navegador#
options = Options() options.add_argument(’–headless’) # Execução em modo headless (sem interface gráfica) options.add_argument(’–disable-gpu’) # Desabilita a aceleração de GPU
options.add_argument(’–disable-background-timer-throttling’)#
options.add_argument(’–disable-backgrounding-occluded-windows')#
chrome_driver_path = ‘/usr/bin/chromedriver’ service = Service(chrome_driver_path)
driver = webdriver.Chrome(service=service, options=options) driver.maximize_window()
actions = ActionChains(driver)#
try: ARCH_TARGET = sys.argv[2] except: ARCH_TARGET = ‘amd64’
try: DISTRIB = sys.argv[3] except: DISTRIB = ‘sid’
print(f’\n\nProcurando para arquitetura {ARCH_TARGET}, versão {DISTRIB}.\n’) link_alvo = ‘https://packages.debian.org/search?suite=' + DISTRIB + ‘&arch=’ + ARCH_TARGET + ‘&mode=filename&searchon=contents&keywords=’
print(link_alvo + objeto_pesquisa_arg)#
driver.get(link_alvo + objeto_pesquisa_arg)
try: WebDriverWait(driver, 5).until( EC.presence_of_element_located((By.XPATH, “//div[@id=‘pcontentsres’]”)) )
except: P = ’’’ Pacote ou distribuição não encontrada!’’’ print(P)
atr_lista = “//tr” lista_match = driver.find_elements(By.XPATH, atr_lista) tmn_lista = len(lista_match)
cont = 0 print(’’) for pacote_path in lista_match: cont +=1 a = pacote_path.get_attribute(“innerText”).split() print(f’{cont}/{tmn_lista} {a[1]}\n\t{a[0]}’)
f = open(’/tmp/pag.html’, ‘w’) f.write(str(driver.page_source)) f.close() driver.quit()