我等待从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
dictionary
和w.org_word
都是String
,函数在一个module
。
您想要的是不可能实现仅用HTTP.jl
。运行页面的Javascript部分是完全不同的——你需要一个Javascript引擎来做这件事,这并不简单。
这并不是Julia的HTTP唯一的弱点:Python requests.get(url)返回javascript代码而不是页面html
(最近python的标准库request
似乎增加了Javascript渲染能力)