蜘蛛爬取是否会执行页面里面的Ajax请求

chen615 发布于 05/13 11:14
阅读 744
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

一个html页面,里面有

$(function(){
ajax 请求--统计页面访问量
})

请问下,网站蜘蛛爬取到这个页面,自动执行到这个Ajax 请求吗?

如果会,如何避免自己设计定的统计页面访问量收到蜘蛛的干扰?本身页面是希望蜘蛛爬取,但是又不希望干扰到我统计正常用户的访问量

 

加载中
1
ljxun
ljxun

js之所以能被执行是因为浏览器里有js的解释器,如果没有js解释器拿什么执行js?爬虫会不会执行js就看爬虫里带不带js解释器了,比如使用了PhantomJS的爬虫。

osc_93582418
osc_93582418
回复 @绿水本无忧 : 不会的
绿水本无忧
绿水本无忧
使用了phantom的 理论上和普通用户看起来就没啥区别了,他有完整的用户使用流程
0
墨盒
墨盒

不会执行js。你用js执行统计没有影响,如果有后台进行的统计根据user-agent排除搜索引擎即可

0
会哭的鳄鱼
会哭的鳄鱼

引用来自“墨盒”的评论

不会执行js。你用js执行统计没有影响,如果有后台进行的统计根据user-agent排除搜索引擎即可

正解!

0
火羽炎翼
火羽炎翼

这个可能要看蜘蛛爬取的方法和节点,如果是模拟浏览器爬取最终页面输出的话,有可能会执行。如果是通过HTML流来爬取的话,就不会执行。

0
g
gamedot

如果执行了JS之后才会渲染出重要内容,那爬虫必然会执行JS。

0
ArchitectureMaster
ArchitectureMaster

麻烦了解一下http取数据的原理,你的爬虫只是将server端的数据get到本地,也就是纯文本的bye[]数组到本地,怎么可能执行里面的内容。你用webclient还是其它的httpclient去请求过来的只是byte[]数组,你然后将其encoding还原成string。对于程序而言,所谓html里的js代码只是一段文本而已。

当然如果你要执行它,必须用htmlunit这样的解析工具将js解析出来,然后使用js引擎如v8直接执行即可。如果你不显示去解析invoke执行,它自己是不会被执行的。

0
AK_诚
AK_诚
很大爬虫框架支持js执行渲染完成后返回用户可见的结果,Python框架一堆,这取决于爬你网站的对象想不想这么干
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部