1
resposta

módulo requests não lida com javascript

existe uma alternativa para o módulo requests como o requests-html mas que esteja 100% atualizado??? pois eu tentei usar o requests-html e o seguinte traceback 'most recent call last' q diz que um lib a mais precisa ser instalada apareceu ->

ImportError: lxml.html.clean module is now a separate project lxml_html_clean.
Install lxml[html_clean] or lxml_html_clean directly.
1 resposta

Oi André, tudo certo?

Entendo seu problema. O módulo requests é ótimo para fazer requisições HTTP, mas como você já percebeu, ele não lida diretamente com JavaScript. O requests-html até tenta fazer isso, mas tem alguns problemas de manutenção, como o que você encontrou relacionado ao lxml.

Alternativas Atualizadas

Aqui vão algumas opções mais atualizadas que você pode usar para lidar com JavaScript nas suas requisições web:

  1. Playwright para Python

    • O Playwright é uma ótima alternativa para automação de navegadores. Ele tem suporte completo para executar JavaScript, capturar interações e renderizar páginas como um navegador faria.

    • Para usar o Playwright, você pode instalar com:

      pip install playwright
      python -m playwright install
      
    • Exemplo básico:

      from playwright.sync_api import sync_playwright
      
      with sync_playwright() as p:
          browser = p.chromium.launch()
          page = browser.new_page()
          page.goto('https://example.com')
          content = page.content()  # Obter o conteúdo HTML após execução do JS
          print(content)
          browser.close()
      
  2. Selenium

    • O Selenium é outra opção bem conhecida para automação de navegadores. Ele suporta múltiplos navegadores e permite interação com JavaScript de forma mais robusta.

    • Para usar o Selenium, instale com:

      pip install selenium
      
    • E configure o WebDriver para o navegador de sua escolha (Chrome, Firefox, etc.).

    • Exemplo básico com Selenium:

      from selenium import webdriver
      
      # Você vai precisar de um driver (por exemplo, chromedriver para Chrome)
      driver = webdriver.Chrome(executable_path="/path/to/chromedriver")
      driver.get("https://example.com")
      html_content = driver.page_source
      print(html_content)
      driver.quit()
      
  3. Pyppeteer

    • O Pyppeteer é uma porta do Puppeteer para Python, que também oferece suporte completo para interação com JavaScript.

    • Instale com:

      pip install pyppeteer
      
    • Exemplo básico:

      import asyncio
      from pyppeteer import launch
      
      async def main():
          browser = await launch()
          page = await browser.newPage()
          await page.goto('https://example.com')
          content = await page.content()  # Pega o HTML renderizado
          print(content)
          await browser.close()
      
      asyncio.get_event_loop().run_until_complete(main())
      

Essas alternativas são bem mais completas quando se trata de renderizar e interagir com páginas que utilizam JavaScript, e elas têm uma comunidade ativa e atualizações constantes. Se você precisa de algo mais robusto e confiável, recomendo o Playwright ou o Selenium, que são as opções mais populares para automação de navegador.

Espero que uma dessas soluções te ajude a resolver o problema! Qualquer coisa, só chamar.