httpunit 抓取网页(旧观念在我的既有观念中,搜索引擎的JS代码)
优采云 发布时间: 2022-03-24 19:13httpunit 抓取网页(旧观念在我的既有观念中,搜索引擎的JS代码)
旧观念
在我现有的概念中,搜索引擎的网络爬虫/蜘蛛/机器人(Crawler/Spider/Robot)只爬取页面的HTML代码,而忽略了内部或外部的JS和CSS代码。所以我们常说Ajax不利于搜索引擎爬取和SEO。
因为在我们看来,搜索引擎爬虫毕竟不是一个强大的浏览器,它不能运行 JS,也不能渲染 CSS。那些色彩斑斓的页面,在爬虫眼里,无非是纯文本流(或收录结构化标记的文本信息流)。
然而,最近看到的两条关于谷歌的新闻,彻底改变了我对搜索引擎爬虫的认识。
新闻一
谷歌高级工程师 Matt Cutts 的一段视频让我震惊。Matt 警告我们,不仅文本与背景颜色相同,字体大小设置为 0、hiding text with CSS 等,这些技巧已经很迂腐了,但谷歌现在也承认了隐藏的作弊通过 JS 文本。
在视频中,一段神秘的 JS 代码将元素的 .style.display 属性设置为“none”,试图隐藏仅用于搜索引擎而非用户的文本。马特表示,这种作弊行为不再对谷歌隐藏。
新闻二
新闻2更恐怖,据说谷歌可以爬取Ajax内容!文章指出,将特定标识符添加到 URL 的哈希部分(即 /#abc 到 /#!abc)将使 Googlebot 了解该 URL 是 Ajax 页面(不是页面中的锚点),并进行抓取。
您可能对 Google 的这项技术改进不感兴趣,但您一定注意到了问题的本质:Googlebot 可以抓取 Ajax 内容,这意味着 Googlebot 完全能够运行页面中的 JS,并且功能齐全!
爬虫和浏览器
如果这两条消息都是真的,那么,从某种意义上说,爬虫的行为和能力已经越来越接近浏览器了。这也意味着搜索引擎爬虫会爬取更多的内容(包括JS和CSS文件),网站的流量负载会增加。
另一方面,爬虫在爬取页面的过程中也会产生更多的资源消耗——意在只处理文本信息的资源消耗远远小于页面的完整渲染和运行客户端程序的资源消耗。
因此,我对这两个消息仍然持怀疑态度。这是谷歌的烟幕吗?还是好人捏造的假新闻?如果 Googlebot 真的已经具备运行 JS 或渲染 CSS 的能力,那么为了将资源开销保持在合理范围内,或许 Google 会在内部启用黑白名单机制?
网站管理员
如果您担心爬虫对主机流量的侵蚀,可以考虑在 robots.txt 文件中禁止爬虫对 *.js 和 *.css 文件的爬取。但是,不确定这样做是否会产生不良副作用。
也有人担心,正常的页面布局有时需要用到一些隐藏文字的手段,比如【CSS图形文字】、【隐藏模块的hx标识信息】等。这会被谷歌判定为作弊吗?
我相信,对于像谷歌这样的“智能”搜索引擎,既然具备让爬虫跑JS和CSS的能力,那么它肯定也有判断什么是作弊,什么是正常布局需求的能力。所以我不认为站长需要恐慌。他们可以做他们通常做的任何事情。他们不怕阴影。规则总是用来约束那些“不法之徒”。
因此,对于一些 SEO 人员来说,这似乎是个坏消息。如果他们还在考虑新的作弊,我认为这没有多大意义。显然,SEO作弊手段的生存空间会越来越小。同时,网站自身内容的价值是SEO的真正基础。