Uso de request.get de Python para analizar el código html que no se carga a la vez

Estoy tratando de escribir una secuencia de comandos de Python que verificará periódicamente un sitio web para ver si un elemento está disponible. He utilizado requests.get, lxml.html y xpath con éxito en el pasado para automatizar las búsquedas en el sitio web. En el caso de esta URL en particular ( http://www.anthropologie.com/anthro/product/4120200892474.jsp?cm_vc=SEARCH_RESULTS#/ ) y otras en el mismo sitio web, mi código no funcionaba.

import requests from lxml import html page = requests.get("http://www.anthropologie.com/anthro/product/4120200892474.jsp?cm_vc=SEARCH_RESULTS#/") tree = html.fromstring(page.text) html_element = tree.xpath(".//div[@class='product-soldout ng-scope']") 

en este punto, html_element debería ser una lista de elementos (creo que en este caso solo 1), pero en su lugar está vacío. Creo que esto se debe a que el sitio web no se está cargando todo de una vez, por lo que cuando requests.get () sale y lo toma, solo toma la primera parte. Así que mis preguntas son 1: ¿Estoy en lo correcto en mi evaluación del problema? y 2: Si es así, ¿hay una manera de hacer que request.get () espere antes de devolver el html, o quizás otra ruta completamente para obtener la página completa?

Gracias

Edit: Gracias a ambas respuestas. Utilicé Selenium y puse mi guión a trabajar.

    Usted no es correcto en su evaluación del problema.

    Puedes verificar los resultados y ver que hay un cerca del final. Eso significa que tienes toda la página.

    Y requests.text siempre agarra toda la página; Si desea transmitirlo un poco a la vez, debe hacerlo explícitamente.

    Su problema es que la tabla no existe realmente en el HTML; es construido dinámicamente por JavaScript del lado del cliente. Puedes verlo leyendo el HTML que se devuelve. Entonces, a menos que ejecutes ese JavaScript, no tienes la información.

    Hay una serie de soluciones generales para eso. Por ejemplo:

    • Utilice selenium o similar para conducir un navegador real para descargar la página.
    • Averigüe manualmente qué hace el código JavaScript y haga un trabajo equivalente en Python.
    • Ejecute un intérprete de JavaScript sin cabeza contra un DOM que haya creado.

    La página usa javascript para cargar la tabla que no se carga cuando las solicitudes obtienen el html, por lo que está obteniendo todo el html, no solo lo que se genera con javascript, puede usar selenium combinado con phantomjs para la navegación sin cabeza para obtener el html:

     from selenium import webdriver browser = webdriver.PhantomJS() browser.get("http://www.anthropologie.eu/anthro/index.jsp#/") html = browser.page_source print(html)