Java 从Android网站解析
我试图解析这个网站:特别是Java 从Android网站解析,java,android,parsing,jsoup,Java,Android,Parsing,Jsoup,我试图解析这个网站:特别是Comune di Partenza和Comune di Arrivo中的选项,但我做不到。代码如下: public class MainActivity extends Activity { ListView lista; static final String BLOG_URL = "http://sbaftv.superdriver.it/ro/asp/ricercaorari.asp?user=FTV1&CodProfilo=1&
Comune di Partenza
和Comune di Arrivo
中的选项,但我做不到。代码如下:
public class MainActivity extends Activity {
ListView lista;
static final String BLOG_URL = "http://sbaftv.superdriver.it/ro/asp/ricercaorari.asp?user=FTV1&CodProfilo=1&VisInternet=1&visnota=0";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lista = (ListView)this.findViewById(R.id.main_lista);//recupero lista da id
//creo ed eseguo l'asynctask
ParsingPaginaWeb parsing = new ParsingPaginaWeb();
parsing.execute("");
}
private class ParsingPaginaWeb extends AsyncTask<String,String,String> {
ArrayList<String> titoli; //lista dei titoli
//ArrayList<String> descrizioni; //lista delle descrizioni
@Override
protected void onPreExecute()
{
//prima di eseguire il parsing inizializzo gli arraylist
titoli = new ArrayList<String>();
//descrizioni = new ArrayList<String>();
}
@Override
protected String doInBackground(String... params) {
try {
Document doc = Jsoup.connect(BLOG_URL).get(); //E' il sito dove faccio il parsing
// prelevo l'h3 cioè il titolo di ogni sezione e poi ciclo tutto
Elements nodeBlogStats = doc.select("div.comunePartINI");
for(Element sezione : nodeBlogStats)//per ogni sezione tra gli elementi ricavati prima
{
titoli.add(sezione.text());
//descrizioni.add(descrizione);
}
} catch (Exception e) {
// In caso di errore
Log.e("ESEMPIO", "ERRORE NEL PARSING");
}
return null;
}
@Override
protected void onPostExecute(String result)
{
// dopo che ho eseguito il parsing mostro i dati nella listview
// usando il custom array adpater ParsingArrayAdapter
ParsingArrayAdapter adapter = new ParsingArrayAdapter(MainActivity.this, titoli);
lista.setAdapter(adapter);
}
}
}
公共类MainActivity扩展活动{
ListView lista;
静态最终字符串BLOG_URL=”http://sbaftv.superdriver.it/ro/asp/ricercaorari.asp?user=FTV1&CodProfilo=1&VisInternet=1&visnota=0";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lista=(ListView)this.findViewById(R.id.main_lista);//recupero lista da id
//creo ed eseguo l'asynctask
ParsingPaginaWeb解析=新建ParsingPaginaWeb();
解析。执行(“”);
}
私有类ParsingPaginaWeb扩展异步任务{
ArrayList titoli;//lista dei titoli
//ArrayList Descriptioni;//lista delle Descriptioni
@凌驾
受保护的void onPreExecute()
{
//prima di eseguire il il Izzo gli arraylist
titoli=新的ArrayList();
//descripioni=newarraylist();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
Document doc=Jsoup.connect(BLOG_URL.get();/E'il sito dove faccio il解析
//在奥格尼岛和图托岛举行的第三届世界杯预赛
元素nodeBlogStats=doc.select(“div.comunePartINI”);
对于(元素sezione:nodeBlogStats)//根据ogni sezione tra gli elementi ricavati prima
{
titoli.add(sezione.text());
//说明i.添加(说明e);
}
}捕获(例外e){
//在卡索迪埃罗
Log.e(“ESEMPIO”、“ERRORE-NEL解析”);
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果)
{
//dopo che ho eseguito il Datti nella列表视图
//usando il自定义数组adpater ParsingArrayAdapter
ParsingarayAdapter=新的ParsingarayAdapter(MainActivity.this,titoli);
setAdapter(适配器);
}
}
}
应用程序将显示一个空活动。有什么想法吗?那是因为您没有正确解析数据。它返回零元素。我已经修改了你的解析代码。下面的代码提取了Comune di Partenza的所有选项 在try块中使用以下代码
doc = Jsoup.connect(BLOG_URL).get();
Elements nodeBlogStats = doc.select("#comunePartINI > option");
for(Element sezione : nodeBlogStats)
{
titoli.add(sezione.text());
}
另外,从asynctask返回结果并在onPostExecute中使用它也是一种很好的做法,而不是定义一个类的字段然后对其进行修改。您的选择器正在尝试检索具有“comunePartINI”类属性的“div”节点。我认为您确实需要检索包含在具有“comunePartINI”id属性的“select”节点中的“option”节点:
Elements nodeBlogStats = doc.select("select#comunePartINI > option");
for(Element sezione : nodeBlogStats)//per ogni sezione tra gli elementi ricavati prima
{
titoli.add(sezione.text());
}
问候。是的,它很有效!!!太神了非常感谢。您认为可以解析该页面中的所有内容来创建应用程序吗?源代码中的任何可用信息都可以通过jsoup轻松解析。只要数据可用,您就可以在应用程序中以任何方式使用它。请务必检查您正在使用的网站是否存在任何侵犯版权的行为。我可以给您一些关于如何继续的建议,但任何编程内容您都只需要做。如果您发现任何问题,请在这里询问stackoverflow。您好,您能帮我解析此网页中的
标记吗?使用我的代码?使用此元素e=doc.select(“p”);更具体地说,哪个标记准确?不管怎样,我想以上内容会让你开始。