如何做http请求获得整个源页面时,html的一部分由javascript加载?



我等待从https://www.collinsdictionary.com/dictionary/english/supremacy获得html网页,但部分html文件是由javascript加载的。当我使用HTTP.jl获得HTTP.request()的网页时,我只获得在javascript运行之前加载的html文件的一部分,因此我获得的网页与我从Chrome获得的网页不同。我怎样才能得到Chrome web页面一样?我必须使用WebDriver吗?jl with是一个围绕Selenium WebDriver的python绑定的包装器?

部分来源:

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

dictionaryw.org_word都是String,函数在一个module

您想要的是不可能实现仅用HTTP.jl。运行页面的Javascript部分是完全不同的——你需要一个Javascript引擎来做这件事,这并不简单。

这并不是Julia的HTTP唯一的弱点:Python requests.get(url)返回javascript代码而不是页面html

(最近python的标准库request似乎增加了Javascript渲染能力)

相关内容

  • 没有找到相关文章

最新更新