gpt4 book ai didi

android - 如何用jsoup解析图片

转载 作者:行者123 更新时间:2023-11-29 01:46:25 25 4
gpt4 key购买 nike

我找不到任何解决方案!我需要用 jsoup 解析一个 html 页面,我也需要解析图像,但我做不到!这是我的 MainActivity

public class MainActivity extends Activity {
public static final String TAG_TITOLI = "titoli";
private static final String TAG_CONTENT = "content";
ListView lista;
static final String BLOG_URL = "http://www.multiplayer.it";
@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("");



// Launching new screen on Selecting Single ListItem
lista.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String titoli = ((TextView) view.findViewById(R.id.riga_listview_titolo)).getText().toString();
//String cont = ((TextView) view.findViewById(R.id.riga_descrizione)).getText().toString();
//String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString();

// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleActivity.class);
in.putExtra(TAG_TITOLI, titoli);
//in.putExtra(TAG_CONTENT, cont);
//in.putExtra(TAG_PHONE_MOBILE, description);
startActivity(in);

}
});

}

private class ParsingPaginaWeb extends AsyncTask<String,String,String> {

ArrayList<String> titoli; //lista dei titoli
//ArrayList<String> content; //lista delle descrizioni

@Override
protected void onPreExecute()
{
Toast.makeText(MainActivity.this ,"Caricamento lista titoli...", Toast.LENGTH_SHORT).show();
//prima di eseguire il parsing inizializzo gli arraylist
titoli = new ArrayList<String>();
//content = new ArrayList<String>();
}

@Override
protected String doInBackground(String... params) {
try {

Document doc = Jsoup.connect(BLOG_URL).get();
Elements nodeBlogStats = doc.select("div.news-col-0 h3"); //per multiplayer.it Elements nodeBlogStats = doc.select("div.news-col-0 h3"); per ftv #comunePartINI > option
for(Element sezione : nodeBlogStats)
{
titoli.add(sezione.text());
}
} 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);
}


}

}

我可以在其中解析标题并在 ListView 中显示它们。这是适配器:

public class ParsingArrayAdapter extends ArrayAdapter<String>{

//riferimenti statici alle risorse e agli id
private final static int LAYOUT = R.layout.riga_listview;
private final static int TITOLO = R.id.riga_listview_titolo;
//private final static int DESCRIZIONE = R.id.riga_listview_descrizione;

ArrayList<String> titoli; //lista dei titoli

Context c; //context
LayoutInflater inflater; //layout inflater

public ParsingArrayAdapter(Context context,ArrayList<String> titoli)
{
super(context,TITOLO);
this.c = context;
this.titoli = titoli;
this.inflater = LayoutInflater.from(c);
}

@Override
public int getCount()
{
return titoli.size(); //ritorno lunghezza lista ( = numero dei titoli)
}

//quando la lista richiede una view
@Override
public View getView(int pos,View view,ViewGroup parent)
{
CacheRiga cache; //cache
if(view==null)//se è la prima volta che viene richiesta la view
{
// creo la view ma non l'attacco alla lista in quanto devo ancora modificare
// i testi delle textview
view = inflater.inflate(LAYOUT, parent,false);
cache = new CacheRiga(); //inizializzo la cache
cache.titolo = (TextView) view.findViewById(TITOLO); //collego titolo
//cache.descrizione = (TextView) view.findViewById(DESCRIZIONE);//collego descrizione
view.setTag(cache);//collego view con cache
}
else
{
cache = (CacheRiga) view.getTag(); //altrimenti prendo la cache dalla view
}

cache.titolo.setText(titoli.get(pos)); //imposto il titolo

return view;
}

private class CacheRiga { // classe per la cache delle righe
public TextView titolo; // cache titolo
//public TextView descrizione; // cache descrizione
}

}

如何为每篇文章插入图片?我不能简单地解析图像的 div,因为我显示的是一串字符。有没有办法将它插入到 ListView 中?谢谢。啊,如果需要的话,这是 riga_listview.xml,我想我需要在其中插入 ImageView 部分。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/riga_listview_titolo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-condensed"
android:layout_margin="10dp"
android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

最佳答案

把它分成几 block -

  1. 从div标签中获取图片的url
  2. 在 ListView 中显示该图像

现在对于“1”,你可以使用jsoup并解析图片的url

对于“2”,首先将 ImageView 添加到您的 ListView xml然后创建一个异步任务,将图像 url 和 ImageView 的引用传递给它,并在 onPostExecute 中设置它的值。你说网站动态设置图像,那么每次在 ListView 适配器的获取 View 方法上,你都必须解析网页。虽然这听起来非常低效和密集,但我认为没有其他办法。如果您能以某种方式知道图像何时会发生变化,那么您就可以对该事件进行处理。无论如何,这是从 url 下载图像并将其设置为 ImageView 的 asynctask 代码

public class ThumbnailDownloader extends AsyncTask<String, Integer, Bitmap>{

ImageView imview;
Context ctx;

public ThumbnailDownloader(Context c, ImageView imview){
this.imview = imview;
this.ctx = c;
}

@Override
protected Bitmap doInBackground(String... urls) {
try{
HttpURLConnection connection = (HttpURLConnection)new URL(getThumbUrl(urls[0])).openConnection();

connection.connect();
InputStream input= connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(input);
return bitmap;

}
catch (Exception f) {
// TODO Auto-generated catch block
f.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(result != null && imview!=null){
imview.setImageBitmap(result);
}
}

public String getThumbUrl(String videoUrl){
return "http://img.youtube.com/vi/"+videoUrl+"/default.jpg";
}
}

您必须根据需要修改 getThumbUrl 方法。上面指定的那个用于下载 youtube 视频缩略图。

关于android - 如何用jsoup解析图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21181685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com