es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extrayendo datos de diferentes pestañas de un sitio web utilizando requests y BeautifulSoup.

Estoy intentando recopilar información de las pestañas: Resumen, Técnico, Fundamental, Rendimiento y PivotLabel de este sitio web – https://www.moneycontrol.com/markets/indian-indices/top-nseauto-companies-list/52classic=true&categoryId=2&exType=N pero solo puedo obtener la tabla de la primera pestaña, es decir, la pestaña de Resumen.

Estoy intentando usar este fragmento de código para obtener la tabla de la pestaña Técnico, pero no funciona:

y = requests.get(auto_url, data={'id': 'extraIdMT', 'value': 'td52N'})
print(y.content)

¿Alguien puede por favor ayudarme a recopilar la tabla de la pestaña Técnico?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener los datos de la pestaña Técnica, primero debes asegurarte de que la pestaña se haya cargado antes de hacer la extracción. Una forma de hacerlo es utilizar un navegador sin cabeza como Selenium para interactuar con el sitio web y cambiar de pestañas. Aquí tienes un ejemplo de código:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from bs4 import BeautifulSoup
    
    auto_url = 'https://www.moneycontrol.com/markets/indian-indices/top-nseauto-companies-list/52classic=true&categoryId=2&exType=N'
    
    # utiliza un navegador sin cabeza para cargar la página
    opciones = webdriver.ChromeOptions()
    opciones.add_argument('headless')
    driver = webdriver.Chrome(options=opciones)
    driver.get(auto_url)
    
    # busca y hace clic en la pestaña Técnica
    pestaña = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'T1')))
    pestaña.click()
    
    # obtén el código fuente de la página después de que se cargue la pestaña
    html = driver.page_source
    
    # utiliza BeautifulSoup para analizar el código fuente y extraer la tabla
    soup = BeautifulSoup(html, 'html.parser')
    tabla = soup.find('table', {'id': 'stockTable'})
    
    # imprime la tabla
    print(tabla)
    

    Este código utiliza Selenium para interactuar con el sitio web, hacer clic en la pestaña Técnica, esperar a que se cargue y luego recuperar el código fuente de la página. Luego utiliza BeautifulSoup para analizar el código fuente y extraer la tabla con el id ‘stockTable’. Puedes modificar este código para extraer datos de otras pestañas también.

Comments are closed.