检查元素是否存在于 fetched URL
Check if element exists in fetched URL
我有一个包含 30 个 URL 的页面,我需要单击每个 URL 并检查元素是否存在。
目前,这意味着:
$('area').each(function(){
$(this).attr('target','_blank');
var _href = $(this).attr("href");
var appID = (window.location.href).split('?')[1];
$(this).attr("href", _href + '?' + appID);
$(this).trigger('click');
});
打开 30 个新标签,我手动浏览它们。
(所有网址都在同一个域中)
如果爬虫有以下逻辑就好了:
$('area').each(function(){
1) get the HREF
2) follow it
3) on that new page:
if($('.element')){
push the $('area') into array1
} else {
push the $('area') into array2
}
});
4) Display array1 in green
Display array2 in red
基本上,我想生成一个报告:
X 个已抓取页面 有 个元素 Y
Z 抓取页面没有 元素Y
我显然无法让 Javascript/jQuery 在新打开的选项卡中工作。
我找到了 this , this and this,但我不确定这是否可行。
这可以用 Javascript/jQuery 完成吗?
我只是求方向,我自己来做。
非常感谢
我建议您使用 iframe
加载页面。
例如:
$.each($your-links, function(index, link) {
var href = $(link).attr("href");
// your link preprocess logic ...
var $iframe = $("<iframe />").appendTo($("body"));
$iframe.attr("src", href).on("load", function() {
var $bodyContent = $iframe.contents().find("body");
// check iframe content and remove iframe
$iframe.remove();
}
}
但是,我应该说,如果您的抓取工具和检查的页面具有不同的域,则会出现 CORS 问题。
我创建了一个简单的项目来展示如何实施这种方法。
您可以在某些本地网络服务器(apache、iis 等)here 和 运行 上下载它
我有一个包含 30 个 URL 的页面,我需要单击每个 URL 并检查元素是否存在。 目前,这意味着:
$('area').each(function(){
$(this).attr('target','_blank');
var _href = $(this).attr("href");
var appID = (window.location.href).split('?')[1];
$(this).attr("href", _href + '?' + appID);
$(this).trigger('click');
});
打开 30 个新标签,我手动浏览它们。
(所有网址都在同一个域中)
如果爬虫有以下逻辑就好了:
$('area').each(function(){
1) get the HREF
2) follow it
3) on that new page:
if($('.element')){
push the $('area') into array1
} else {
push the $('area') into array2
}
});
4) Display array1 in green
Display array2 in red
基本上,我想生成一个报告:
X 个已抓取页面 有 个元素 Y
Z 抓取页面没有 元素Y
我显然无法让 Javascript/jQuery 在新打开的选项卡中工作。
我找到了 this , this and this,但我不确定这是否可行。
这可以用 Javascript/jQuery 完成吗?
我只是求方向,我自己来做。
非常感谢
我建议您使用 iframe
加载页面。
例如:
$.each($your-links, function(index, link) {
var href = $(link).attr("href");
// your link preprocess logic ...
var $iframe = $("<iframe />").appendTo($("body"));
$iframe.attr("src", href).on("load", function() {
var $bodyContent = $iframe.contents().find("body");
// check iframe content and remove iframe
$iframe.remove();
}
}
但是,我应该说,如果您的抓取工具和检查的页面具有不同的域,则会出现 CORS 问题。
我创建了一个简单的项目来展示如何实施这种方法。 您可以在某些本地网络服务器(apache、iis 等)here 和 运行 上下载它