Javascript 在Android上获取生成的HTML

Javascript 在Android上获取生成的HTML,javascript,android,html,Javascript,Android,Html,我正在制作一个应用程序,使用regex从网站获取一些数据。 但这些数据只有在加载整个页面后才会加载。 所以我得到的源代码只包含调用该代码的脚本。 有什么方法可以得到生成的html源代码吗 我提到的数据实际上是一个网站内的谷歌搜索结果。 当我通过url进行搜索查询时,如 website.com/search?q=car 结果给出了该站点内与查询相关的所有链接,我正试图从结果中提取链接URL 我相信该页面中的代码会生成html脚本 <script> (function() {

我正在制作一个应用程序,使用regex从网站获取一些数据。 但这些数据只有在加载整个页面后才会加载。 所以我得到的源代码只包含调用该代码的脚本。 有什么方法可以得到生成的html源代码吗

我提到的数据实际上是一个网站内的谷歌搜索结果。 当我通过url进行搜索查询时,如

website.com/search?q=car

结果给出了该站点内与查询相关的所有链接,我正试图从结果中提取链接URL

我相信该页面中的代码会生成html脚本

<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");