Javascript 在Android上获取生成的HTML
我正在制作一个应用程序,使用regex从网站获取一些数据。 但这些数据只有在加载整个页面后才会加载。 所以我得到的源代码只包含调用该代码的脚本。 有什么方法可以得到生成的html源代码吗 我提到的数据实际上是一个网站内的谷歌搜索结果。 当我通过url进行搜索查询时,如 website.com/search?q=car 结果给出了该站点内与查询相关的所有链接,我正试图从结果中提取链接URL 我相信该页面中的代码会生成html脚本Javascript 在Android上获取生成的HTML,javascript,android,html,Javascript,Android,Html,我正在制作一个应用程序,使用regex从网站获取一些数据。 但这些数据只有在加载整个页面后才会加载。 所以我得到的源代码只包含调用该代码的脚本。 有什么方法可以得到生成的html源代码吗 我提到的数据实际上是一个网站内的谷歌搜索结果。 当我通过url进行搜索查询时,如 website.com/search?q=car 结果给出了该站点内与查询相关的所有链接,我正试图从结果中提取链接URL 我相信该页面中的代码会生成html脚本 <script> (function() {
<script>
(function() {
var cx = '013305635491195529773:0ufpuq-fpt0';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
(功能(){
变量cx='013305635491195529773:0ufpuq-fpt0';
var gcse=document.createElement('script');
gcse.type='text/javascript';
gcse.async=true;
gcse.src=(document.location.protocol=='https:'?'https:':'http:')+
'//www.google.com/cse/cse.js?cx='+cx;
var s=document.getElementsByTagName('script')[0];
s、 parentNode.insertBefore(gcse,s);
})();
您可以使用WebView。从url获取数据,然后将其保存在某个变量中。
Android Studio中的OP在Javascript运行后获取外部网站源代码的解决方案是另一个Stackoverflow问题的代码
final Context myApp=this;
/*此类的实例将注册为JavaScript接口*/
类MyJavaScriptInterface
{
@JavascriptInterface
@抑制警告(“未使用”)
公共空处理html(字符串html)
{
//根据应用程序的需要处理html
}
}
最终WebView浏览器=(WebView)findViewById(R.id.browser);
/*显然,如果您想让JavaScript正常工作,就必须启用它*/
browser.getSettings().setJavaScriptEnabled(true);
/*注册一个名为HTMLOUT的新JavaScript接口*/
addJavascriptInterface(新的MyJavaScriptInterface(),“HTMLOUT”);
/*在调用loadUrl之前必须设置WebViewClient*/
setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url)
{
/*这个调用将JavaScript注入到刚刚完成加载的页面中*/
browser.loadUrl(“javascript:window.HTMLOUT.processHTML(“”+document.getElementsByTagName('html')[0]。innerHTML+“”);”;
}
});
/*加载网页*/
browser.loadUrl(“http://lexandera.com/files/jsexamples/gethtml.html");
如果我们能看到您当前拥有的代码,我们将更容易为您提供帮助。我目前的建议是,在不查看代码的情况下,尝试在页面加载后调用脚本,方法是使用window.onload
,或者使用JQuery,方法是使用$(document).ready(…)代码>我假设您使用javascript获得结果。问题是,该站点不在我的控制范围内。我可以从android端进行更改。有没有办法在执行完整个脚本后才加载页面..哦,我现在明白了。您是使用Java和Android Studio创建本机应用程序,还是使用Cordova/Phonegap或cocos2d-x或Tianium?如果您使用Android Studio,请查看此解决方案()。我使用Android Studio
final Context myApp = this;
/* An instance of this class will be registered as a JavaScript interface */
class MyJavaScriptInterface
{
@JavascriptInterface
@SuppressWarnings("unused")
public void processHTML(String html)
{
// process the html as needed by the app
}
}
final WebView browser = (WebView)findViewById(R.id.browser);
/* JavaScript must be enabled if you want it to work, obviously */
browser.getSettings().setJavaScriptEnabled(true);
/* Register a new JavaScript interface called HTMLOUT */
browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
/* WebViewClient must be set BEFORE calling loadUrl! */
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
/* This call inject JavaScript into the page which just finished loading. */
browser.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
});
/* load a web page */
browser.loadUrl("http://lexandera.com/files/jsexamples/gethtml.html");