您将jQuery用于可以使用本机javascript完成的操作。
document.querySelectorAll主要与jQuery一起使用选择器。它不返回数组,而是(在我看来)笨拙的NodeList。
要使其正确迭代,我更喜欢将其spread放入数组,然后在其上调用forEach。
[...document.querySelectorAll('.foo')].forEach((element,index) => {
console.log(element.innerText);
});
<div class="foo">bar</div>
<div class="foo">baz</div>
<div class="foo">bal</div>
此外,获取数据的方法目前不同。
在所有图像上,您需要先触发一次点击。
这将激活javascript事件处理程序,该事件处理程序将设置图片祖父母的href。
您需要先让Google事件处理程序运行,以便我们分离其余的执行流程,以便google脚本可以执行此操作并更新DOM。我们使用setTimeout()进行此操作。
然后,当google脚本运行时,DOM元素已更新,我们计划的超时时间有运行的机会,现在href已被填充。
在单击之前,链接如下所示:
点击后
我们现在看到已填充href。输入的网址是:
https://www.google.com/imgres?imgurl=https%3A%2F%2Fwww.researchgate.net%2Fprofile%2FJerome_Droniou%2Fpublication%2F305983658%2Ffigure%2Ffig5%2FAS%3A668650201690119%401536430039650%2FMesh-patterns-for-the-tests-using-the-HMM-method-left-Test-1-right-Test-2.png&imgrefurl=https%3A%2F%2Fwww.researchgate.net%2Ffigure%2FMesh-patterns-for-the-tests-using-the-HMM-method-left-Test-1-right-Test-2_fig5_305983658&tbnid=_UuLNMPCQAT0uM&vet=12ahUKEwjhsu31zcnoAhWbgKQKHR3jAdUQMygAegUIARDTAQ..i&docid=LThLi5REXoitfM&w=428&h=428&q=hmm%20test&ved=2ahUKEwjhsu31zcnoAhWbgKQKHR3jAdUQMygAegUIARDTAQ
在此网址中,我们在imgurl=
之后看到以https开头的内容。这是我们的目标图片网址,但已经过urlencode编码,并且是较大网址的一部分。
因此,我们使用一些简单的子字符串操作来操作字符串。
然后我们还有奇怪的字符
https%3A%2F%2Fwww.researchgate.net%2Fprofile%2FJerome_Droniou%2Fpublication%2F305983658%2Ffigure%2Ffig5%2FAS%3A668650201690119%401536430039650%2FMesh模式用于使用HMM的测试方法-left-Test-1-right-Test-2.png
为此,我们可以使用decodeURIComponent()将其转换为普通网址
document.write(decodeURIComponent('https%3A%2F%2Fwww.researchgate.net%2Fprofile%2FJerome_Droniou%2Fpublication%2F305983658%2Ffigure%2Ffig5%2FAS%3A668650201690119%401536430039650%2FMesh-patterns-for-the-tests-using-the-HMM-method-left-Test-1-right-Test-2.png'))
然后将其添加到数组中。
处理完所有内容后,我们将创建urls文件并下载。
var urls = [];
var count = 0;
[...document.querySelectorAll('.rg_i')].forEach((element,index) => {
let el = element.parentElement.parentElement;
el.click();
count++;
setTimeout(() => {
let google_url = el.href;
let start = google_url.indexOf('=',google_url.indexOf('imgurl'))+1;
let encoded = google_url.substring(start,google_url.indexOf('&',start));
let url = decodeURIComponent(encoded);
urls.push(url);
console.log(count);
if(--count == 0) {
let textToSave = urls.join('\n');
let hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'urls.txt';
hiddenElement.click();
}
},50);
});
,
拒绝加载脚本是因为内容安全策略。在Firefox中,您可以通过网址栏中的about:config禁用csp,并将security.csp.enable设置为false。
我尝试在Firefox控制台中使用以下代码进行测试:
javascript: (function(e,s) {
e.src = s;
e.onload = function() {
jQuery.noConflict();
console.log('jQuery injected');
jQuery(".rg_i").get().forEach(function(entry,index,array) {
var src = jQuery('.rg_i').attr('src');
console.log("src1: " + src);
});
var src = jQuery('.rg_i').attr('src');
console.log("src2: " + src);
};
document.head.appendChild(e);
})(document.createElement('script'),'//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js');
祝你好运:)
,
我认为您需要添加以下内容:
<meta http-equiv="Content-Security-Policy" content="default-src https://cdn.example.net; child-src 'none'; object-src 'none'">
将其添加到策略中,有很多不同的方式(请参阅文档)。
本文链接:https://www.f2er.com/2529727.html