2017-09-01 18 views
1

私はGoogleの画像検索を使用して画像を検索し、JSOUPライブラリを使用してAndroidアプリケーションの最初の画像のURLを取得しています 私の問題はどれくらい試しても問題ありませんURLは、最初の画像が含まれている要素は、ここにURLjsoupで画像のURLを取得

を持っていないように見える nullであることは、XMLファイルです:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="arb.myapplication.MainActivity"> 
<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:srcCompat="@mipmap/ic_launcher" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="131dp" 
    android:id="@+id/imageView" /> 

<Button 
    android:text="Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_marginRight="39dp" 
    android:layout_marginEnd="39dp" 
    android:layout_marginTop="11dp" 
    android:id="@+id/button3" 
    android:elevation="0dp" /> 

私が取得するためにボタンを使用して画像表示 を無視します画像のURL ここに私そのテキストがnullであるので、私はすでに選ばれた要素 それをの属性キーと値を取得しようとしました

トーストが表示されないonProgressUpdate機能でJAVAファイル

package arb.myapplication; 

import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.drawable.BitmapDrawable; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 

import org.jsoup.Connection; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Attribute; 
import org.jsoup.nodes.Attributes; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.URL; 


public class MainActivity extends AppCompatActivity { 

class DownloadIcon extends AsyncTask<Object, Object, Integer> 
{ 

    @Override 
    protected Integer doInBackground(Object... objects) { 
     Connection connecion= Jsoup.connect("http://www.google.com/search?tbm=isch&q=facebook+logo"); 
     try { 
      Document document=connecion.get(); 
      Elements element=document.select("img.rg_ic.rg_i"); 

      String url=element.first().absUrl("src"); 
      publishProgress(url); 

     } catch (IOException e1) { 
      publishProgress(-1); 
     } 
     return 0; 
    } 

    @Override 
    protected void onProgressUpdate(Object... values) { 
     /* ImageView imageView=(ImageView) findViewById(R.id.imageView); 
     try { 
      InputStream inputStream= new URL(values[0].toString()).openStream(); 
      imageView.setImageBitmap(BitmapFactory.decodeStream(inputStream)); 
     } catch (IOException e) { 
      throw new RuntimeException(e); 
     }*/ 
     Toast.makeText(getBaseContext(),values[0].toString(),Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    protected void onPostExecute(Integer integer) { 
     Toast.makeText(getBaseContext(),"done",Toast.LENGTH_SHORT).show(); 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button button3=(Button) findViewById(R.id.button3); 
    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      new DownloadIcon().execute(); 

     } 
    }); 
} 

}

はよ私はクロームエクスプローラを使って要素を解析していますが何の画像を取得していないので、src属性

答えて

0

ずにテキストがnullの場合に表示されるものと一致しました。リクエストをデバッグすると、JsoupクライアントにGoogleからイメージを取得する権限が与えられていないことを示す403ステータスコードが表示されます。あなたの目標を達成するには、ブラウザを使用するかエミュレートする必要があります。

+0

ので、私はそれを私がJSOUP @Eugene –

+0

@AhmadRajabの代わりに使用することができ、私はAndroidの具体例を知りませんが、あなたは間違いで開始するセレンwebdriverをし、ヘッドレスブラウジングを見てみなければならない何 を解決するために何をすべき。 – Eugene

+0

Google画像検索の代わりにbing画像検索を使用するように変更しました。 問題は、ビングがそれを再送しないうちに自動検索を許可しないということです。 ありがとう@Eugene –

関連する問題