Espero obtener la página web html de https://www.collinsdictionary.com/dictionary/english/supremacy , pero javascript carga parte del archivo html. Cuando uso HTTP.jl para obtener la página web con HTTP.request() , solo obtengo parte del archivo html que se cargó antes de que se ejecutara el javascript , por lo que la página web que obtengo es diferente a la página web que obtuve de Chrome . ¿Cómo puedo hacer que la página web sea igual que la de Chrome? ¿Tengo que usar WebDriver.jl con un envoltorio alrededor de los enlaces python de Selenium WebDriver ?
parte de mi fuente:
function get_page(w::word)::Bool response = nothing try response = HTTP.request("GET", "https://www.collinsdictionary.com/dictionary/$(dictionary)/$(w.org_word)", connect_timeout=connect_timeout, readtimeout=readtimeout, retries=retries, redirect=true,proxy=proxy) catch e push!(w.err_log, [get_page_http_err, string(e)]) return falses end open("./assets/org_page.html", "w") do f write(f, String(response.body)) end return true end dictionary y w.org_word son String , la función está en un module .
Lo que quieres es imposible de lograr solo con HTTP.jl Ejecutar la parte Javascript de la página es fundamentalmente diferente: necesita un motor Javascript para hacerlo, lo cual no es nada simple.
Y esta no es una debilidad única del HTTP de Julia: Python request.get (url) que devuelve el código javascript en lugar de la página html
(Recientemente, la request de biblioteca estándar en python parece agregar la capacidad de representación de Javascript)