如何应对网站反爬虫策略?如何高效地爬大量数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何应对网站反爬虫策略?如何高效地爬大量数据相关的知识,希望对你有一定的参考价值。

参考技术A 应对反爬策略的方法:1、模拟正常用户。反爬虫机制还会利用检测用户的行为来判断,例如Cookies来判断是不是有效的用户。

2、动态页面限制。有时候发现抓取的信息内容空白,这是因为这个网站的信息是通过用户的XHR动态返回内容信息。解决这种问题就要爬虫程序对网站进行分析,找到内容信息并抓取,才能获取内容。

3、降低IP访问频率。有时候平台为了阻止频繁访问,会设置IP在规定时间内的访问次数,超过次数就会禁止访问。所以绕过反爬虫机制可以降低爬虫的访问频率,还可以用IPIDEA代理IP换IP解决限制。
参考技术B 我的经验是,大量的相关文章+合理的站内链接+稳定的更新频率。

 如何做好seo优化策略可参考如下方法:

  在搜索引擎优化中,SEO策略影响到最终的优化效果。SEO策略不管对中小网站还是大型网站都是重要的,而对于大型网站,制定一个好的SEO策略尤为重要。

  第一部分:关键词分析

  关键词分析是所有SEO必须掌握的一门功课,大型网站虽然有海量的数据,但是每个页面都需要进行关键词分析,除了SEO之外,策划、编辑也需要具备一定的关键词分析能力。

  关键词分析的基本原则:

  1、 调查用户的搜索习惯:这是一个重要的方面,只有了解用户的搜索习惯,才能把我用户的搜索需求,用户喜欢搜索什么?用什么搜索引擎?等等

  2、 关键词不能过于宽泛:关键词过于宽泛会导致竞争激烈,耗费大量时间却不一定得到想要的效果,并且可能降低了关键词的相关性。

  3、 关键词不能过冷:想想,没有用户搜索的关键词,还值得去优化吗?

  4、 关键词要与页面内容保持高度的相关性:这样既有利于优化又有利于用户。

  关键词挑选的步骤:

  1、 确定核心关键词:我们应该考虑的是哪一个词或者两个词能够最准确的描述网页的内容?哪一个词用户搜索次数最多?

  2、 核心关键词定义上的扩展:例如核心关键词的别名、仅次于核心关键词的组合等、核心关键词的辅助等。

  3、 模拟用户思维设计关键词:把自己假想为用户,那么我会去搜索什么关键词呢?

  4、 研究竞争者的关键词:分析一下排名占有优势的竞争对手的网页,他们都使用了什么关键词?

  第二部分:页面逆向优化

  为什么要做逆向优化?因为在大型网站中,页面的优化价值一般不同于中小网站。考虑到各种综合因素(例如品牌、页面内容、用户体验等),大型网站的页面优化价值大多数呈现逆向顺序,即:最终页>专题页>栏目页>频道页>首页。

  如何针对各页面进行关键词分配呢?通常情况是这样的:

  1、 最终页:针对长尾关键词;

  2、 专题页:针对热门关键词,例如"周杰伦";

  3、 栏目页:针对固定关键词,例如"音乐试听";

  4、 频道页:针对核心关键词,例如 "音乐";

  5、 首页:不分配关键词,而是以品牌为主。

  在进行关键词分配后,我们可以在最终页中添加匹配的内链作为辅助,这是大型网站内链的优势。

  第三部分:前端搜索引擎友好,包括UI设计的搜索友好和前端代码的搜索友好两点

  1、首先来看UI设计的搜索引擎友好:主要是做到导航清晰,以及flash和图片等的使用,一般来说,导航以及带有关键词的部分不适合使用flash及图片,因为大多数搜索引擎无法抓取flash及图片中的文字。

  2、然后是前端代码的搜索引擎友好:

  a、代码的简洁性:搜索引擎喜欢简洁的html代码,这样更有利于分析。

  b、重要信息靠前:指带关键词的及经常更新的信息尽量选择出现在html的靠前位置。

  c、过滤干扰信息:大型网站的页面一般比较复杂,各种广告、合作、交换内容以及其他没有相关性的信息比较多,我们应该选择使用js、iframe等搜索引擎无法识别的代码过滤掉这一部分信息。

  d、代码的基础SEO:这是基础的SEO工作,避免html错误以及语义化标签。

  第四部分:内部链接策略

  为什么要强调内部链接策略?因为内链具有以下优势:

  1、 大型网站海量的数据使内链的优势远远大于外链。外链的数量可能几千几万几十万,但是大型网站拥有成百万上千万甚至上亿的海量网页内容,如果用这些海量的网页做内链的建设,优势是很明显的。

  2、 网站内的网页间导出链接是一件很容易的事情。

  3、 提高搜索引擎对网站的爬行索引效率,增强收录,也有利于PR的传递。

  4、 集中主题,使该主题的关键词在搜索引擎中具有排名优势。

  在内链建设中,应该遵循以下原则:1、控制文章内链数量:穿插于文章内的链接可以根据内容的多少控制在3-8个左右。2、链接对象的相关性要高。3、给重要的网页更多的关注:使重要的更有关键词价值的网页得到更好的排名。4、使用绝对路径。

  第五部分:外部链接策略

  在强调大型网站的内链建设的同时也不能太忽视了外链的建设。外链的建设虽然没有中小网站那么重要,但是也具有很高的价值。通常可以通过交换链接、制造链接诱饵、投放带链接的软文等方法来建设外链。

  1、 来看交换链接应该要遵循哪些原则:

  a、链接文字中包含关键词;b、尽量与相关性高的站点、频道交换链接;c、对方网站导出链接数量不能过多,过多的话没有太大的价值;d、避免与未被收录以及被搜索引擎惩罚的网站交换链接

  2、 制造链接诱饵:制造链接诱饵是一件省力的工作,这使得对方网站主动的为我们添加链接。制造链接诱饵的技巧很多,但是可以用两个字来概括:创意。

  3、 带链接的软文投放。指的是在商务推广或者为专门为了得到外链而进行的带链接的软文投放。

  第六部分:网站地图策略

  有很多大型网站不重视网站地图的建设,不少大型网站的网站地图只是敷衍了事,做一个摆设。其实网站对于大型网站是很重要的,大型网站海量的数据、复杂的网站导航结构、极快的更新频率使得搜索引擎并不能完全抓取所有的网页。这就是为什么有的大型网站拥有百万千万甚至上亿级的数据量,但是却只被搜索引擎收录了网站数据量的一半、三分之一甚至更少的一个重要原因。连收录都保证不了,怎么去做排名?

  Html地图:

  1、 为搜索引擎建立一个良好的导航结构。

  2、 Html地图中可以分为横向和纵向导航,横向导航主要是频道、栏目、专题等链接,纵向导航主要是针对关键词。

  3、 每个页面都有指向网站地图的链接。

  Xml网站地图:主要针对Google、yahoo、live等搜索引擎。因为大型网站数据量太大,单个的sitemap会导致sitemap.xml文件太大,超过搜索引擎的容忍度。所以我们要将sitemap.xml拆分为数个,每个拆分后的sitemap.xml则保持在搜索引擎建议的范围内。

  第七部分:搜索引擎友好写作策略

  搜索引擎友好写作是创造海量数据对取得好的搜索引擎排名的很关键的一部分。而SEO人员不可能针对每个网页都提出SEO建议或者方案,所以对写作人员的培训尤为重要。如果所有写作人员都按照搜索引擎友好的原则去写作,则产生的效果是很恐怖的。

  1、 对写作人员要进行反复培训:写作人员不是SEO,没有经验,不可能一遍就领悟SEO的写作技巧。所以要对写作人员进行反复的培训才能达到效果。

  2、 创造内容先思考用户会去搜索什么,针对用户的搜索需求而写作。

  3、 重视title、meta写作:例如Meta虽然在搜索引擎的权重已经很低,但是不好的meta写作例如堆积关键词、关键词与内容不相关等行为反而会产生负作用。而Title的权重较高,尽量在Title中融入关键词。

  4、 内容与关键词的融合:在内容中要适当的融入关键词,使关键词出现在适当的位置,并保持适当的关键词密度。

  5、 为关键词加入链接很重要:为相关关键词加入链接,或者为本网页出现的其他网页的关键词加入链接,可以很好的利用内链优势。

  6、 为关键词使用语义化标签:

  第八部分:日志分析与数据挖掘

  日志分析与数据挖掘常常被我们所忽视,其实不管是大型网站还是中小网站,都是一件很有意义的工作。只是大型网站的日志分析和数据挖掘工作难度要更高一些,因为数据量实在太大,所以我们要具备足够的耐心来做该项工作,并且要有的放矢。

  1、 网站日志分析:网站日志分析的的种类有很多,如访问来源、浏览器、客户端屏幕大小、入口、跳出率、PV等。跟SEO工作最相关的主要有以下三种:a、搜索引擎流量导入;b、搜索引擎关键词分析;c、用户搜索行为统计分析

  2、 热点数据挖掘:我们可以通过自身的网站日志分析以及一些外在的工具和SEO自己对热点的把握能力来进行热点数据的挖掘。热点数据的挖掘主要有以下手段:a、把握行业热点,可以由编辑与SEO共同完成;b、预测潜在热点,对信息的敏感度要求较高,能够预测潜在的热门信息。c、自己创造热点,如炒作等;d、 为热点制作专题

  第九部分:为关键词创作专题

  除了最终页面,各种针对热门的关键词所制作的专题应该作为网站的第二大搜索引擎流量来源。我们在对热点数据进行挖掘后,就可以针对这些热门关键词制作专题了。制作的专题页的内容从何而来?我们一般通过程序实现对应关键词相关的信息进行筛选聚合,这样就使得内容与关键词高度匹配,为用户、为搜索引擎都提供了所需要的内容。

  当然,仅仅建立一个专题而没有辅助手段是很难保证专题的搜索引擎排名的,我们可以通过文章内链、频道页推荐、或者最终页的专题推荐来获得链接达到效果。

  1、为热点关键词制作专题

  2、关键词相关信息的聚合

  3、辅以文章内链导入链接本回答被提问者采纳

网站常见的反爬虫和应对方法

这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫。在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。

 

从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。这里我们只讨论数据采集部分。 

一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式。前两种比较容易遇到,大多数网站都从这些角度来反爬虫。第三种一些应用ajax的网站会采用,这样增大了爬取的难度。

 

通过Headers反爬虫 

从用户请求的Headers反爬虫是最常见的反爬虫策略。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer)。如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。对于检测Headers的反爬虫,在爬虫中修改或者添加Headers就能很好的绕过。 

基于用户行为反爬虫 

还有一部分网站是通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。 

大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。这样的代理ip爬虫经常会用到,最好自己准备一个。有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib2中很容易做到,这样就能很容易的绕过第一种反爬虫。 

对于第二种情况,可以在每次请求后随机间隔几秒再进行下一次请求。有些有逻辑漏洞的网站,可以通过请求几次,退出登录,重新登录,继续请求来绕过同一账号短时间内不能多次进行相同请求的限制。 

动态页面的反爬虫 

上述的几种情况大多都是出现在静态页面,还有一部分网站,我们需要爬取的数据是通过ajax请求得到,或者通过JavaScript生成的。首先用Firebug或者HttpFox对网络请求进行分析。如果能够找到ajax请求,也能分析出具体的参数和响应的具体含义,我们就能采用上面的方法,直接利用requests或者urllib2模拟ajax请求,对响应的json进行分析得到需要的数据。 

能够直接模拟ajax请求获取数据固然是极好的,但是有些网站把ajax请求的所有参数全部加密了。我们根本没办法构造自己所需要的数据的请求。我这几天爬的那个网站就是这样,除了加密ajax参数,它还把一些基本的功能都封装了,全部都是在调用自己的接口,而接口参数都是加密的。遇到这样的网站,我们就不能用上面的方法了,我用的是selenium+phantomJS框架,调用浏览器内核,并利用phantomJS执行js来模拟人为操作以及触发页面中的js脚本。从填写表单到点击按钮再到滚动页面,全部都可以模拟,不考虑具体的请求和响应过程,只是完完整整的把人浏览页面获取数据的过程模拟一遍。 

用这套框架几乎能绕过大多数的反爬虫,因为它不是在伪装成浏览器来获取数据(上述的通过添加 Headers一定程度上就是为了伪装成浏览器),它本身就是浏览器,phantomJS就是一个没有界面的浏览器,只是操控这个浏览器的不是人。利用 selenium+phantomJS能干很多事情,例如识别点触式(12306)或者滑动式的验证码,对页面表单进行暴力破解等等。它在自动化渗透中还 会大展身手,以后还会提到这个。

 

作者:BSDR

以上是关于如何应对网站反爬虫策略?如何高效地爬大量数据的主要内容,如果未能解决你的问题,请参考以下文章

大神教你如果学习Python爬虫 如何才能高效地爬取海量数据

网站常见的反爬虫和应对方法

常见的反爬虫和应对方法

常见的反爬虫和应对方法

常见的反爬虫和应对方法

常见的反爬虫和应对方法