繁体   English   中英

使用jsoup获取图像的url

[英]Getting the url of an image with jsoup

我正在使用Google图像搜索来查找图像,并使用JSOUP库获取我的android应用程序中第一张图像的URL。我的问题是,无论我尝试多少,它都显示URL为空,看起来像包含该元素的元素第一张图片没有网址

这是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,这里是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();

        }
    });
}

}

onProgressUpdate函数中不显示Toast,因为其文本为null

我已经尝试获取所选元素的属性键和值,它与我使用Chrome浏览器解析该元素但没有src属性时显示的内容相匹配

文本为空,因为没有图像。 如果您调试请求,则会看到403状态代码,该代码告诉您Jsoup客户端无权从Google提取图像。 您需要使用或模拟浏览器来实现您的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM