java - 如何在java中从google获取特定的图片url
问题描述
我想从谷歌获取第一个结果的图像地址并保存到 Excel 表中。我使用 apache poi 库来阅读 excel 表。我想要根据图像的 src 数据。另一件事是图像中的 src 数据不完整。我们必须双击它来复制整个数据。我尝试了 jsoup 库,但没有得到正确的结果。请建议我进行任何更改。
package com.uc.excel;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class ReadExcelFileDemo {
public static void main(String...args) throws IOException {
final String GOOGLE_SEARCH_URL ="https://www.google.com/search?q=";
//https://www.google.co.in/search?q=usa&hl=en&tbm=isch
FileInputStream fis=new FileInputStream(new File("C:\\users\\hvt\\desktop\\country.xlsx"));
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheetAt(0); //creating a Sheet object to retrieve object
Iterator<Row> itr = sheet.iterator(); //iterating over excel file
while (itr.hasNext())
{
Row row = itr.next();
Iterator<Cell> cellIterator = row.cellIterator(); //iterating over each column
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
System.out.print(cell.getStringCellValue() + "\t\t\t");
String searchURL=GOOGLE_SEARCH_URL+cell.getStringCellValue()+" flag"+"&hl=en&tbm=isch";
System.out.print(searchURL);
Document doc = Jsoup.connect(searchURL).get();
Elements link = doc.select("img.rg_i Q4LuWd");
System.out.println("link2 " +link.attr("src"));
System.out.println("link2 " +link.toString());
}
System.out.println("");
}
}
}
解决方案
推荐阅读
- javascript - 渲染如何与分页点击状态同步?
- shell - 我自己的 shell 程序中的后台进程忽略标准输入
- javascript - 我的分页跳来跳去,我不知道如何解决它
- javascript - 使用数据库中的选项添加新的选择表单
- python - Flask,在视图之间传递用户输入的数据
- date - 将 YYYYMMDD8 转换为 DATE9 格式?
- c# - c#字典使用文本框从datagridview中选择索引
- prestashop - 如何使用 PrestaSharp 更新 PrestaShop 中的 product.quantity?
- c - 使用 printf 打印一个字符会导致什么都不显示
- r - 使用 facetwrap 的多个 Kmeans 聚类和绘图