这是我在这里的第一个问题,我写这篇文章是因为我还没有发现任何相关内容。
我正在做我的最终论文,我想做一个基本上从大学服务器(使用Jsoup)进行网络抓取的Android应用程序,从学生那里获取科目分数并展示它们。
我使用Eclipse Kepler作为框架并在Android 4.2.2模拟器中测试应用程序。
为了访问服务器,我在FrameLayout中使用由LinearLayout隐藏的WebView。 它通过使用JavaScript填写登录表单来登录到服务器,但是当它从页面中提取HTML代码并将其保存在String中时,它不会获得整个HTML。我试过使用document.getElementsByTagName('html')[0] .innerHTML; document.documentElement.innerHTML;和document.documentElement.outerHTML具有相同的结果。
以下是WebView代码:
private final String loginPV = "https://www.upm.es/politecnica_virtual/login.upm";
private String usuario;
private String password;
private WebView navegador;
public static boolean login;
public static String marks_html;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gestor_pv);
navegador = (WebView) findViewById(R.id.webView1);
Bundle extras = getIntent().getExtras();
usuario = extras.getString("user");
password = extras.getString("pass");
login = false;
navegador.getSettings().setJavaScriptEnabled(true);
navegador.addJavascriptInterface(new MyJavaScriptInterface(this), "GETNOTAS");
navegador.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if(!login){
view.loadUrl("javascript:{" +
"document.getElementById('user').value = '"+usuario +"';" +
"document.getElementById('pass').value = '"+password+"';" +
"document.getElementById('form_login_enviar').click();" +
" };");
login = true;
}else if(login){
view.loadUrl("javascript:window.GETNOTAS.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
}
}
});
navegador.loadUrl(loginPV);
以下是JavaScript界面:
class MyJavaScriptInterface {
Context mContext;
MyJavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void processHTML(String html)
{
marks_html = html;
}
}
以下是获得的HTML:
<html>
<head>
<base href="https://www.upm.es/politecnica_virtual/principal.upm">
<title>Politécnica Virtual</title>
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Language" content="ES">
<link rel="shortcut icon"
href="comun_publica/grafica/comunes/favicon.ico">
<link rel="stylesheet"
href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css">
<link rel="stylesheet"
href="comun_publica/estilos/politecnica_movil.css">
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script
src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
</head>
<body style="zoom: 1;" class="ui-mobile-viewport ui-overlay-c">
<div data-role="page" data-add-back-btn="true"
data-url="/politecnica_virtual/principal.upm" tabindex="0"
class="ui-page ui-body-c ui-page-active" style="min-height: 460px;">
<form id="f" action="/politecnica_virtual/principal.upm?16_13_1693"
method="post" enctype="multipart/form-data" accept="text/html"
data-ajax="false">
<div data-role="header" data-theme="c" class="ui-header ui-bar-c"
role="banner">
<h1 class="ui-title" role="heading" aria-level="1">
<img src="comun_publica/grafica/comunes/logo_movil.png" alt="PV">
</h1>
<a data-theme="b" data-icon="delete"
href="comun_publica/varios/cierresesion.upm?UPMSSID=32l0ntbeklovmqom0fmp8jkgo2"
class="ui-btn-left ui-btn ui-btn-up-b ui-shadow ui-btn-corner-all ui-btn-icon-left"
data-corners="true" data-shadow="true" data-iconshadow="true"
data-wrapperels="span"><span class="ui-btn-inner"><span
class="ui-btn-text">Salir</span><span
class="ui-icon ui-icon-delete ui-icon-shadow"> </span></span></a>
<h2 class="ui-title" role="heading" aria-level="1">Alumno</h2>
</div>
<div data-role="content" class="ui-content" role="main">
<input type="hidden" name="carpeta_activa" id="carpeta_activa"
value="F"> <input type="hidden" name="UPMSSID" id="UPMSSID"
value="32l0ntbeklovmqom0fmp8jkgo2"> <input type="hidden"
name="accion" id="accion" value="16_13_1693"> <input
type="hidden" name="accion_anterior" id="accion_anterior"
value="16_13_1693"> <input type="hidden" name="idioma"
id="idioma" value="">
<!-- Menu Seccion -->
<ul data-role="listview" data-inset="true" data-divider-theme="d"
class="ui-listview ui-listview-inset ui-corner-all ui-shadow">
<li data-corners="false" data-shadow="false" data-iconshadow="true"
data-wrapperels="div" data-icon="arrow-r" data-iconpos="right"
data-theme="c"
class="ui-btn ui-btn-up-c ui-btn-icon-right ui-li-has-arrow ui-li ui-first-child"><div
class="ui-btn-inner ui-li">
<div class="ui-btn-text">
<a href="#/politecnica_virtual/principal.upm&ui-page=0-21"
class="ui-link-inherit"><span>Mis Datos</span></a>
</div>
<span class="ui-icon ui-icon-arrow-r ui-icon-shadow"> </span>
</div></li>
<li data-corners="false" data-shadow="false" data-iconshadow="true"
data-wrapperels="div" data-icon="arrow-r" data-iconpos="right"
data-theme="c"
class="ui-btn ui-btn-up-c ui-btn-icon-right ui-li-has-arrow ui-li"><div
class="ui-btn-inner ui-li">
<div class="ui-btn-text">
<a href="#/politecnica_virtual/principal.upm&ui-page=0-17"
class="ui-link-inherit"><span>Utilidades</span></a>
</div>
<span class="ui-icon ui-icon-arrow-r ui-icon-shadow"> </span>
</div></li>
<li data-corners="false" data-shadow="false" data-iconshadow="true"
data-wrapperels="div" data-icon="arrow-r" data-iconpos="right"
data-theme="c"
class="ui-btn ui-btn-up-c ui-btn-icon-right ui-li-has-arrow ui-li"><div
class="ui-btn-inner ui-li">
<div class="ui-btn-text">
<a href="#/politecnica_virtual/principal.upm&ui-page=0-6"
class="ui-link-inherit"><span>Formación</span></a>
</div>
<span class="ui-icon ui-icon-arrow-r ui-icon-shadow"> </span>
</div></li>
<li data-corners="false" data-shadow="false" data-iconshadow="true"
data-wrapperels="div" data-icon="arrow-r" data-iconpos="right"
data-theme="c"
class="ui-btn ui-btn-up-c ui-btn-icon-right ui-li-has-arrow ui-li ui-last-child"><div
class="ui-btn-inner ui-li">
<div class="ui-btn-text">
<a href="#/politecnica_virtual/principal.upm&ui-page=0-3"
class="ui-link-inherit"><span>Atención al usuario</span></a>
</div>
<span class="ui-icon ui-icon-arrow-r ui-icon-shadow"> </span>
</div></li>
</ul>
<!-- Menu Seccion Cierre -->
<div class="ui-body ui-body-b">
<!-- Informacion Principal -->
<div id="informacion_principal">
<!--Una consulta-->
<!-- Cabecera de Seccion -->
<h2>Tablón de notas</h2>
<!-- Cierre Cabecera de Seccion -->
<!-- Contenido de la Seccion -->
<h3 class="destacado_flecha_naranja">Información. Tablón de
notas</h3>
<div class="separador_inferior">
<link rel="stylesheet"
href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/jquery-ui.css">
<link rel="stylesheet"
href="comun_publica/estilos/jquery_modificaciones.css">
<input type="hidden" name="filtro_expediente_mio"
id="filtro_expediente_mio" value="67100"> <input
type="hidden" name="filtro_plan_mio" id="filtro_plan_mio"
value="59SC"> <input type="hidden" name="filtro_codnum"
id="filtro_codnum" value=""> <input type="hidden"
name="confirma" id="confirma" value="N"> <input
type="hidden" name="tipo_revision" id="tipo_revision" value="">
<p>En esta pantalla se pueden consultar las calificaciones
provisionales de las asignaturas matriculadas en el año
académico en curso.</p>
<p class="advertencia">Para consultar calificiaciones
definitivas de convocatorias finalizadas puede hacerlo desde la
opción "Mis Datos - Expediente".</p>
</div>
<div id="contenido_seccion" class="separador_inferior">
<h3 class="destacado_flecha_naranja">Asignaturas en las que
está matriculado en 2013-14</h3>
<p>A continuación puede ver todas las convocatorias
disponibles para las asignaturas que usted tiene matriculadas. A
medida que vaya superándolas se irán eliminando de la lista.</p>
<table data-role="table" class="ui-table ui-table-reflow">
<caption>CONVOCATORIA DE FEBRERO</caption>
<thead>
<tr>
<th>Asignatura</th>
<th style="width: 10%;">Nota</th>
<th style="width: 46%;">Información</th>
</tr>
</thead>
<tbody>
<tr>
<td><b class="ui-table-cell-label">Asignatura</b>MICROPROCESADORES<br>Laboratorio:
Superado</td>
<td><b class="ui-table-cell-label">Nota</b>1.7 (S)</td>
<td><b class="ui-table-cell-label">Información</b><a
href="javascript:document.getElementById('fichero').value='2013142272FEB.pdf';document.getElementById('f3').submit();"
class="descarga_pdf ui-link">Descargar examen</a><br> <strong>Fecha
límite para solicitar revisión:</strong> 27/01/2014 00:00 <br>
Ha finalizado el plazo para solicitar revisión.</td>
</tr>
</tbody>
</table>
<table data-role="table" class="ui-table ui-table-reflow">
<caption>CONVOCATORIA DE JULIO</caption>
<thead>
<tr>
<th>Asignatura</th>
<th style="width: 10%;">Nota</th>
<th style="width: 46%;">Información</th>
</tr>
</thead>
<tbody>
<tr>
<td><b class="ui-table-cell-label">Asignatura</b>ELECTROMAGNETISMO
Y ONDAS</td>
<td><b class="ui-table-cell-label">Nota</b></td>
<td><b class="ui-table-cell-label">Información</b></td>
</tr>
<tr>
<td><b class="ui-table-cell-label">Asignatura</b>MICROPROCESADORES</td>
<td colspan="2" style="font-style: italic;"><b
class="ui-table-cell-label">Nota</b>Está línea será eliminada
si supera la asignatura en la convocatoria anterior.</td>
</tr>
</tbody>
</table>
<div style="display: none;">
<!-- placeholder for modal_solicitud_online -->
</div>
<form id="f3" name="f3"
action="/politecnica_virtual/comun_publica/varios/descarga.php"
method="post">
<input type="hidden" id="fichero" name="fichero" value="">
<input type="hidden" id="dir" name="dir" value="actas">
<!-- Cierre Contenido de la Seccion -->
</form>
</div>
</div>
<!-- Cierre Informacion Principal Cierre -->
</div>
<form id="form_webmail"
action="/politecnica_virtual/comun_publica/varios/urlcorreo.upm"
target="_blank" method="post" data-ajax="false">
<fieldset>
<input type="hidden" name="UPMSSID" id="UPMSSID"
value="32l0ntbeklovmqom0fmp8jkgo2">
</fieldset>
</form>
</div>
</form>
<!-- Content Cierre -->
<!-- Pie de Pagina -->
<div data-role="footer" style="text-align: center;"
class="ui-footer ui-bar-a" role="contentinfo">
<div data-role="controlgroup" data-type="horizontal" data-mini="true"
class="ui-corner-all ui-controlgroup ui-controlgroup-horizontal ui-mini"
aria-disabled="false" data-disabled="false" data-shadow="false"
data-corners="true" data-exclude-invisible="true"
data-init-selector=":jqmData(role='controlgroup')">
<div class="ui-controlgroup-controls">
<!-- Acceso a Webmail -->
<a
href="javascript:document.getElementById('form_webmail').submit();"
data-role="button" data-corners="true" data-shadow="true"
data-iconshadow="true" data-wrapperels="span" data-theme="a"
class="ui-btn ui-btn-up-a ui-shadow ui-btn-corner-all ui-first-child"><span
class="ui-btn-inner"><span class="ui-btn-text">Webmail</span></span></a>
<!-- Acceso a Webmail Cierre -->
<a
href="javascript: document.getElementById('carpeta_activa').value='S';document.getElementById('accion').value='19_7_379'; document.getElementById('f').submit();"
title="Buscar en el directorio" data-role="button"
data-corners="true" data-shadow="true" data-iconshadow="true"
data-wrapperels="span" data-theme="a"
class="ui-btn ui-btn-up-a ui-shadow ui-btn-corner-all"><span
class="ui-btn-inner"><span class="ui-btn-text">Directorio</span></span></a>
<a
href="javascript: document.getElementById('carpeta_activa').value='S';document.getElementById('accion').value='27_2_388'; document.getElementById('f').submit();"
title="Cambio de contraseña" data-role="button"
data-corners="true" data-shadow="true" data-iconshadow="true"
data-wrapperels="span" data-theme="a" class="ui-btn ui-btn...
它以......结束,不知道为什么。 有没有解决方案?
对不起,如果这是一个愚蠢的问题:)
答案 0 :(得分:0)
您可以使用java中提供的SAX库将其解析为XML,也可以将其作为文件读取。
URL fileloc = new URL("url");
File html = new File(fileloc);
或者,如果您想在网页加载时预取数据并从URL获取文件(EditText)
//From onclick listener
EditText url = (EditText) findViewById(R.id.url);
String hfile = url.getText().toString();
MyWebView.loadUrl(hfile);
URL html = new URL(hfile);
File file = new File(html);
然后将html作为字符串回显出来。