我想创建一个程序,当我键入关键字时,在其中搜索Google并抓取两张图片。我想知道如何从Google获取图像的标签,以及如何通过使用android studio进行编码以将图像保存到android。
我没有完全理解,因为我具有入门阶段的技能。我已经做了很多搜索,而且我知道Google的图片搜索URL是“ https://www.google.com/search?q=keyword&tbm=isch ”。
import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.view.View; import android.widget.Button; import android.widget.TextView;
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private String htmlPageUrl = "https://www.google.com/search?q=keyword&tbm=isch"; //homepage
private TextView textviewHtmlDocument;
private String htmlContentInStringFormat="";
int cnt=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textviewHtmlDocument = (TextView)findViewById(R.id.textView);
textviewHtmlDocument.setMovementMethod(new ScrollingMovementMethod()); //scroll
Button htmlTitleButton = (Button)findViewById(R.id.button);
htmlTitleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println( (cnt+1) +"번째 파싱");
JsoupAsyncTask jsoupAsyncTask = new JsoupAsyncTask();
jsoupAsyncTask.execute();
cnt++;
}
});
}
private class JsoupAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
try {
Document doc = Jsoup.connect(htmlPageUrl).get();
//test
Elements titles= doc.select("div.news-con h1.tit-news");
System.out.println("-------------------------------------------------------------");
for(Element e: titles){
System.out.println("title: " + e.text());
htmlContentInStringFormat += e.text().trim() + "\n";
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
textviewHtmlDocument.setText(htmlContentInStringFormat);
}
}
} 这不是我的代码,我正在学习其他人的代码来学习。我有一个问题,我不知道如何修改才能满足我的需求。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
创建一个程序来搜索Google图片并抓取图片,包括其标签,然后将这些图片保存到Android设备上,涉及到几个步骤。由于直接从Google搜索结果中抓取图片可能违反Google的服务条款,我建议使用公开的API来获取合法的图片资源,比如使用“Custom Search JSON API”(需要API密钥且可能涉及费用)。但请注意,即使是通过API获取,也应遵循每个图片的版权规定。
通常,图片的标签或元数据不会直接通过URL提供,而是嵌入在图片的HTML页面或者通过特定的API返回。如果你使用了合规的图片搜索API,它可能会提供图片描述、标签等信息。例如,使用Google的Custom Search JSON API时,返回的结果中可能包含与搜索关键词相关的描述信息,你可以将其作为图片的标签。
一旦你有了图片的URL,可以通过Android代码下载并保存图片到本地。以下是一个简单的示例,展示了如何在Android应用中下载并保存图片:
AndroidManifest.xml
中添加INTERNET权限。<uses-permission android:name="android.permission.INTERNET" />
private void downloadAndSaveImage(String imageUrl, String destinationPath) {
// 使用Picasso或其他库简化图片处理
Picasso.get()
.load(imageUrl)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
try {
File file = new File(destinationPath);
FileOutputStream fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
Log.d("IMAGE_DOWNLOAD", "Image saved successfully.");
} catch (IOException e) {
Log.e("IMAGE_DOWNLOAD", "Error saving image.", e);
}
}
@Override
public void onBitmapFailed(Exception e, Drawable errorDrawable) {
Log.e("IMAGE_DOWNLOAD", "Error loading bitmap.", e);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
// 可选的加载占位符处理
}
});
}
这个例子使用了Picasso库来简化图片的下载和显示过程。你需要在你的build.gradle
文件中添加Picasso的依赖:
dependencies {
implementation 'com.squareup.picasso:picasso:2.71828'
}
请记住,始终尊重版权,确保你有权使用所下载的图片,并且按照服务条款使用API。