对于依赖Ajax或javascript呈现数据的网站,如何使用WWW::Selenium保存数据?我的以下代码能够执行所有的点击并到达正确的网页,但是它没有保存数据(我的意思是所有比赛的列表),因为它不在html源代码中。我尝试了$sel->get_body_text(),但也不起作用。你能帮我把渲染的数据保存到txt文件或htm文件吗?谢谢。
use WWW::Selenium;
open (FO, ">test.htm");
my $sel = WWW::Selenium->new( host => "localhost",
port => 4444,
browser => "*firefox",
browser_url => "https://www.kaggle.com/competitions/",
);
$sel->start;
$sel->open("https://www.kaggle.com/competitions/");
$sel->click("all-switch");
$sel->click("completed");
print FO $sel->get_html_source();
print "Done\n";发布于 2015-10-02 16:11:12
免责声明:我还没有尝试过!
您应该能够使用get_eval($script)运行一些JavaScript,为您获取完整的当前DOM。这与页面的正文文本不同,因为DOM是当前的表示形式,而不是浏览器最初解析的内容。
my $html = $sel->get_eval(q{document.getElementsByTagName('html')[0].outerHTML});当我在浏览器的控制台中运行该JS时,它会给出整个页面的当前表示。下面的代码片段创建一个空的<div>,然后使用jQuery向其中添加一些文本,然后使用上面的普通JS代码来获取整个文档的<div>并对其进行alert。您将看到它包含我们添加的文本。
$('#foo').text("bar");
alert(document.getElementsByTagName('html')[0].outerHTML);<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo" />
https://stackoverflow.com/questions/32899403
复制相似问题