首页 > 解决方案 > 使用 javascript 从谷歌图片搜索中获取 URL

问题描述

我需要一个文本文件,其中每一行都是来自谷歌搜索的图像的 URL。

我最初在观看 fastia 的课程时找到了一个指南。但是,他们提供的用于获取 URL 的 javascript 不再有效。我可能应该提到它曾经对我有用。

过去对我有用的方法是在 google.com/images 中搜索例如“狗”,然后向下滚动以加载大量图像。然后按 ctrl+shift+J(chrome 浏览器),这将打开一个控制台,我将在其中粘贴以下内容:

document.body.innerHTML = `<a href="data:text/csv;charset=utf-8,${escape(Array.from(document.querySelectorAll('.rg_di .rg_meta')).map(el=>JSON.parse(el.textContent).ou).join('\n'))}" download="links.txt">download urls</a>`;

然后按回车后,我会得到一个下载文本文件(links.txt)的链接。该文件将包含先前 google 搜索中每个图像的 URL。任务完成!(这在不到一个月前对我有用)。

但是当我现在运行代码时,我只得到一个空文件。我对javascripts一无所知,所以这对我来说几乎是不可能调试的。但我想一定有什么改变了,因为这不再有效,但我不知道那可能是什么。我什至在我 gf 的电脑上试过,结果是一样的——一个空文件。

这是一个类似指南的链接,同样受到 fastai 课程的启发。(我找不到我使用的原始版本)https://towardsdatascience.com/fastai-image-classification-32d626da20#d90e

我也尝试按照本指南进行操作,但它甚至没有给我文件或链接。请参阅下图中的结果。 我来自链接指南的结果

在我最近寻找解决方案的过程中,我找到了多个像这样的指南,但没有一个对我有用。

如果解决方案可以像我以前的方法一样简单,我将非常感激,我所要做的就是将一行粘贴到控制台中。我想对以前的 javascript 做一个小改动就可以让它再次工作,但我可能错了......

是的 - 我知道图片中的警告是什么意思。:P

标签: javascript

解决方案


在控制台中试试这个

var urls=Array.from(document.querySelectorAll('.rg_i')).map(el=> el.hasAttribute('data-src')?el.getAttribute('data-src'):el.getAttribute('data-iurl'));
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(urls.join('\n'));
hiddenElement.target = '_blank';
hiddenElement.download = 'myFile.txt';
hiddenElement.click();


推荐阅读