不知道广大程序员朋友们注意到一个现象么?用百度是无法搜索到淘宝网的网页。为什么会造成这种现象?这就要从网络爬虫说起了。
咱们程序员如果自己搭设个人网站,在上面分享一些自己的技术文章,面临的一个重要问题就是让搜索引擎能够搜索到自己的个人网站,这样才能让更多的读者访问到。
而搜索引擎如百度和微软Bing搜索,Google搜索等通过什么方式才能收录我们的个人网站呢?
答案是搜索引擎的网络爬虫。 网络爬虫是一个很形象的名词,是属于搜索引擎的工具,只有被这些网络爬虫“爬过”的内容才有机会出现在对应搜索引擎的搜索结果中。
个人站长对网络爬虫是又爱又恨。一方面,网络爬虫可以让我们的个人网站出现在搜索结果里,对我们的个人网站进行扩散。另一方面,如果网络爬虫太多太频繁地访问个人网站,会一定程度上影响正常用户的请求处理。
于是就有了文章开头我提到的百度搜不到淘宝产品信息的文章。
在浏览器里输入https://www.taobao.com/robots.txt,
能看到淘宝网的一个文件robots.txt:
随便选一段解释:这个robots.txt的意思是,淘宝网做出了规定,如果网络请求来自百度爬虫(Baiduspider), 那么只允许(allow)百度爬虫读取article, oshtml和/ershou, 不允许读取的是product。
User-agent: Baiduspider
Allow: /article
Allow: /oshtml
Allow: /ershou
Disallow: /product/
Disallow: /
那么淘宝网怎么知道一个请求是来自百度爬虫,还是来自真正的用户访问呢?答案就是HTTP请求的User-agent字段。
下图是我用Chrome访问淘宝网的HTTP请求的User-agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36
再回到Tomcat。如果有大量来自网络爬虫的读取请求,Web服务器需要为每一个请求创建一个session。当Session数量变得巨大时,消耗的服务器内存和资源也是巨大的。
因此,Tomcat对于来自网络爬虫的请求,使用同一个session来处理。
我们打开Tomcat的源代码来学习。
Tomcat的源代码可以到其官网去下载:
https://tomcat.apache.org/download-70.cgi
点这个链接:
我下载的是7.0.90版本,只有7MB大。
这里需要注意,即使Spider显式的传了一个 sessionId过来,也会弃用,而是根据client Ip 来进行判断,即对于 相同的 Spider 只提供一个Session。
在下载好的源代码文件夹里,找到这个子文件夹:apache-tomcat-7.0.90-srcjavaorgapachecatalinaalves
打开CrawlerSessionManagerValve.java:
可以看到从第192行代码开始都是Tomcat用来检测进来的网络请求是否是网络爬虫:
通过这个类里定义的正则表达式检测HTTP请求的user-agent字段来判断到底该请求是否来自网络爬虫:
".*[bB]ot.*|.*Yahoo! Slurp.*|.*Feedfetcher-Google.*"
一旦正则表达式在第205行匹配成功,将第206行的标志位设成true。
如果检测到是网络爬虫,则用clientIdSessionId.get这个API获取Tomcat专门为网络爬虫预留的sessionId, 然后在第226行把该sessionId分配到进来的网络爬虫请求,这样就避免了浪费太多的资源申请session来服务海量的网络爬虫请求,节省了Web服务器的资源。
相关推荐
资源名字:基于java+Lucene+Tomcat的搜索引擎设计与实现(源码+文档)JAVA_Lucene_Tomcat_搜索引擎.zip 资源类型:项目全套源码+文档+辅导视频 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景...
JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb...
这是我信息检索课的课程作业。 代码注释很详细。绝对可以运行。我爬得是 搜狐 的网页。...这是一个基于java的多线程的网络爬虫。 包含了 必须使用包括 httpclient 的 4个jar包. 另外有问题欢迎交流。站内。你懂得。
关于“百歌搜索引擎tomcat嵌入版(Baioogle-SearchEngine Embed in Tomcat)”的说明: 2008年5月份,因学习《信息检索》课程,本人利用java的开源搜索引擎库lucene,以及结合ajax技术google-suggest功能,模仿baidu...
很好用,很强大,直接把它导入到eclipse中,运行即可, 在tomacat中运行http://localhost:8080
在tomcat环境下搭建solr和mmseg4j搜索引擎,包括客户端调用实例
solr+tomcat完成搜索功能,solr+tomcat完成搜索功能,solr+tomcat完成搜索功能
基于网络爬虫技术的网络新闻分析主要用于网络数据爬取。本系统结构如下: (1)网络爬虫模块。 (2)中文分词模块。 (3)中3文相似度判定模块。 (4)数据结构化存储模块。 (5)数据可视化展示模块。
在tomcat环境下搭建solr和mmseg4j搜索引擎 在tomcat环境下搭建solr和mmseg4j搜索引擎
可以通过tomcat启动的最新7.3.1solr搜索引擎,可在此基础上进行无限的扩展与优化,定制开发自己的搜索引擎,经过改进,打开就可以使用,可以作为单独项目,也可以作为服务端进行二次开发
基于开源搜索引擎工具(如Heritrix +Lucence,或Nutch+Solr),搭建独立完整的搜索引擎测试平台。 2)垂直搜索行业信息:...3)搜索测试:搭建web平台(建议通过Tomcat实现),通过web平台实现垂直搜索引擎系统的搜索功能。
内含tomcat7 tomcat8 tomcat9免安装版本;供需要的人下载。
包含tomcat7,tomcat8,tomcat9,解压、在eclipse配置好即可。
23 5.3在Tomcat上部署项目 25 5.4小节 25 第六章 搜索引擎策略 26 6.1简介 26 6.2面向主题的搜索策略 26 6.2.1导向词 26 6.2.3权威网页和中心网页 27 6.3小节 27 参考文献 28
apachetomcat
.Compose配置文件指令与一键部署LNMP网站 .一键部署Nginx代理Tomcat集群 .一键部署多节点爬虫程序(模拟)
tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat...
tomcat 7 和 tomcat 8 ,两个版本
此文件包含apache-tomcat-8.0.37.zip和apache-tomcat-7.0.59-windows-x64.zip
2022网络搭建国赛题tomcat题解题思路,有详细步骤,按步骤做就能成功