javascript - 使用 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
解决方案
在控制台中试试这个
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();
推荐阅读
- json - MS PowerAutomate 中的 Ping 例程
- javascript - 如何将 yup validationSchema 与 react-hook-form 一起使用?
- rpa - 如何让 UIPath 输入到窗口中的特定点?
- excel - Excel VBA:如何提取名称中包含特定年份的子文件夹,例如以“2020”开头的子文件夹。并且也停在那个树级别
- java - 如何恢复 JTable 中的列宽?
- docker - 在 Docker 中的 Python Slim 映像中安装 GDB
- java - 从 .java 文件中获取方法作为文件
- jenkins - 如何通过命令行运行黄瓜标签/步骤定义?
- nginx - Ubuntu 对网络处理的限制
- php - DateTime::createFromFormat 返回 False - 毫秒