我知道您可以通过 robots.txt、元标记、链接属性等来控制爬虫/蜘蛛可以访问哪些文档。
但在我的特殊情况下,我只想忽略文档的一部分。该部分不能存在于 IFrame 中,而且是“正常”内容。类似于 <noscript>
block 会很棒,将部分内容标记为“请不要索引这个。”
- 首先,我考虑使用
document.write()
写出那些部分,但我了解到我的假设“蜘蛛通常不执行 JavaScript”似乎是错误的。 - 当我检测到抓取工具时,我正在考虑提供不同版本的页面,但这不是很准确,对吧?
- 此外,我不能将这些内容放在图片上。
是否有任何技巧可以避免将文档的特定部分(而不是散布在文档中的某些特定单词)编入索引?
[编辑] 我知道我可以做一些“如果用户代理在机器人列表中”,但我不喜欢这个想法。可能有一种更不可知的方法。要抑制的部分包含动态内容,无论我在做什么,它都必须与 IE6 等“旧”浏览器一起使用:\
最佳答案
静态内容和动态内容之间的唯一区别是您包含的文件的扩展名:
var extension = "js"; // change to "php" for example to load dynamic content
function loadJS(filename){
var js=document.createElement('script')
js.setAttribute("type","text/javascript")
js.setAttribute("src", filename)
document.getElementsByTagName("head")[0].appendChild(js);
}
window.onload=function() {
loadJS("somecontenttoload."+extension); // hard for crawlers to read
}
在 somecontenttoload.js 中:
document.getElementById("content").innerHTML="This is static";
在 somecontenttoload.php 中
<?PHP
header("content-type:text/javascript");
// load data from database
$bla = .....;
?>
document.getElementById("content").innerHTML="<? echo $bla; ?>";
关于javascript - 是否存在一种让爬虫忽略部分文档的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16442402/