甲方大大發(fā)來賀電折柠,要求掃碼提取營業(yè)執(zhí)照中的信用代碼和其他信息宾娜,頭大歸頭大,安排扇售!
寫到一半發(fā)現(xiàn)個問題前塔,應(yīng)該在這里交代一下,營業(yè)執(zhí)照分為舊版和新版承冰,舊版url里不包含信用代碼字段华弓,新版url中含有信用代碼字段,也就是UUID困乒,新版的可以直接截取寂屏,下面主要講一下舊版的怎么提取
現(xiàn)在的需求是從上面的鏈接中提取出自己想要的字段娜搂,筆者這里需要里面的統(tǒng)一社會信用代碼迁霎,繼續(xù)
1.按f12通過前端代碼拿到JS Path(如圖所示)
copy出來的類似這種document.querySelector("#boxShadow1 > ul > li.icon1 > span"),這里可根據(jù)自己的使用場景來復(fù)制path百宇,比如iOS可以用XPath
2.根據(jù)url提取信用代碼code考廉,代碼如下
WebSettings webSettings =webView.getSettings();//webView可以在布局里隨便寫一個寬高設(shè)置為0或者gone
webSettings.setJavaScriptEnabled(true);//是否允許JavaScript腳本運行,默認(rèn)為false携御。設(shè)置true時昌粤,會提醒可能造成XSS漏洞
webView.loadUrl(url);//加載
webView.setWebViewClient(new WebViewClient() {
@Override
? ? public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//web加載完成后,通過evaluateJavascript()方法接收J(rèn)S函數(shù)的返回值
//將步驟1里的代碼復(fù)制過來因痛,加上.textContent或者innerText后綴來獲取里面的內(nèi)容
? ? ? ? webView.evaluateJavascript("document.querySelector(\"#boxShadow1 > ul > li.icon1 > span\").textContent", new ValueCallback() {
@Override
? ? ? ? ? ? public void onReceiveValue(String s) {
if (s !=null && !s.equals("null")) {//非空判斷
String code = s.replace("\"", "");//去掉多余的""
? ? ? ? ? ? ? ? }
Log.i("zxd", "斷點:" + s);//打印婚苹,搞定
? ? ? ? ? ? }
});
? ? }
});
至此,功能完成