Javascript 如何从sfpg(单文件PHP库)中查找所有img src属性
我试图在Greasemonkey中创建一个用户脚本,在下面的图库中迭代所有IMG,从缩略图下载实际图像 缩略图和图像之间的差异是url查询参数的值;因此,我们必须将cmd=thumb更改为cmd=image。这很容易 因此,首先我尝试获取var中的所有img标记,然后尝试迭代所有标记,并在每次迭代中使用stringreplace将thumb更改为image以获得实际的图像 但是这个方法没有检索任何img!!!在其他每一页中,我都能找到所有IMG,除了这一页 如果有人能告诉我为什么会这样,我会很有帮助的 网址: 在下面的代码片段中,首先我尝试查看console中的所有img标记,但它只返回baseURI,而不返回内部img。我还检查了tags.count返回1,而不是3,因为这个页面上有三个图像。除非我能够找到IMG,否则我无法完成下一部分,即更改URL和自动下载。我和其他网站都已经准备好了这些代码Javascript 如何从sfpg(单文件PHP库)中查找所有img src属性,javascript,html,greasemonkey,image-gallery,tampermonkey,Javascript,Html,Greasemonkey,Image Gallery,Tampermonkey,我试图在Greasemonkey中创建一个用户脚本,在下面的图库中迭代所有IMG,从缩略图下载实际图像 缩略图和图像之间的差异是url查询参数的值;因此,我们必须将cmd=thumb更改为cmd=image。这很容易 因此,首先我尝试获取var中的所有img标记,然后尝试迭代所有标记,并在每次迭代中使用stringreplace将thumb更改为image以获得实际的图像 但是这个方法没有检索任何img!!!在其他每一页中,我都能找到所有IMG,除了这一页 如果有人能告诉我为什么会这样,我会很有
/==UserScript==
//@name未命名脚本629250
//@version 1
//@匹配http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw
//@grant none
//==/UserScript==
(功能(){
"严格使用",;
var tags=document.getElementsByTagName('img');
对于(var i=0;i图像是延迟加载的-它们不会在页面加载时立即包含在HTML中。延迟解决方案是在尝试选择img
s之前添加一个小的setTimeout
另一个问题是,这里不仅仅有三个img
s,最好只选择缩略图视图中的一个,使用.thumbbox img
。请尝试以下操作:
// ==UserScript==
// @name sveimages
// @version 1
// @match http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw
// @grant none
// ==/UserScript==
setTimeout(() => {
const fullImageURLs = Array.from(
document.querySelectorAll('.thumbbox img'),
img => img.src.replace('cmd=thumb', 'cmd=image')
);
console.log(fullImageURLs);
}, 100);
输出:
Array(3)
0:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkNsZW1lbnRpbmVzLmpwZyowZmYzZmJlOTBlZjI3MjRhMzIwYzEzY2UxNzgzMGFlYTg3ZjM2OTg0NjZhOTM3NzllNWNhNTY1Y2FkNjczNmYy"
1:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkZ1bm55IEZydWl0LmpwZypjMmY5ZGI2ZmEzZDA1Y2UxNGE1NmQ1OGVmODA1YjhmNTU1ODU2MmZmNzZhM2RmNDUxMmFmNGRiODE5YTg1YTc1"
2:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKk9yYW5nZXMuanBnKmQ2ZDlkMDc1MDYxMWI4OTA5NDk1NGE1NzEzMmE3ZDg5YWYzNDllNjQ4YTgwMzhkODg5YzhjZTViMzZlNjUwNTM"
length:3
图像是延迟加载的-它们不会在页面加载时立即包含在HTML中。延迟解决方案是在尝试选择img
s之前添加一个小的setTimeout
另一个问题是,这里不仅仅有三个img
s,最好只选择缩略图视图中的一个,使用.thumbbox img
。请尝试以下操作:
// ==UserScript==
// @name sveimages
// @version 1
// @match http://sye.dk/sfpg/demo/index.php?sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKipkN2UwYWI2MTRkZGU2MTBiYjliMzEzM2M2ZDUzODE3MTY0OWU4ZWI3YjU0MzcwMTU2ODIxN2YxMTA2NWFiOWEw
// @grant none
// ==/UserScript==
setTimeout(() => {
const fullImageURLs = Array.from(
document.querySelectorAll('.thumbbox img'),
img => img.src.replace('cmd=thumb', 'cmd=image')
);
console.log(fullImageURLs);
}, 100);
输出:
Array(3)
0:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkNsZW1lbnRpbmVzLmpwZyowZmYzZmJlOTBlZjI3MjRhMzIwYzEzY2UxNzgzMGFlYTg3ZjM2OTg0NjZhOTM3NzllNWNhNTY1Y2FkNjczNmYy"
1:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKkZ1bm55IEZydWl0LmpwZypjMmY5ZGI2ZmEzZDA1Y2UxNGE1NmQ1OGVmODA1YjhmNTU1ODU2MmZmNzZhM2RmNDUxMmFmNGRiODE5YTg1YTc1"
2:"http://sye.dk/sfpg/demo/index.php?cmd=image&sfpg=RnJ1aXRzL09yYW5nZSBGcnVpdHMvKk9yYW5nZXMuanBnKmQ2ZDlkMDc1MDYxMWI4OTA5NDk1NGE1NzEzMmE3ZDg5YWYzNDllNjQ4YTgwMzhkODg5YzhjZTViMzZlNjUwNTM"
length:3
哇,非常感谢,在我的例子中,我把超时时间改为1000,它工作了,当它是100时,它并没有加载,可能是因为整个系统的住宿速度不同,这就是原因。但谢谢你!!!真的很感谢!!你对拇指框部分的看法也是正确的,我在for循环中用if过滤了它,但没有将整个代码粘贴到这里:)哇,非常感谢,在我的例子中,我把超时时间改为1000,它工作了,当它是100时,它并没有加载,可能是因为整个系统的住宿速度不同,这就是原因。但谢谢你!!!真的很感谢!!你对拇指框部分的看法也是正确的,我在for循环中用if过滤了它,但没有将整个代码粘贴到这里:)