如何应对网站反爬虫策略?如何高效地爬大量数据
发布网友
发布时间:2022-04-26 17:17
我来回答
共3个回答
懂视网
时间:2022-04-28 09:20
【相关学习推荐:网站制作视频教程】
爬虫是什么呢,简单而片面的说,爬虫就是由计算机自动与服务器交互获取数据的工具。爬虫的最基本就是get一个网页的源代码数据,如果更深入一些,就会出现和网页进行POST交互,获取服务器接收POST请求后返回的数据。一句话,爬虫用来自动获取源数据,至于更多的数据处理等等是后续的工作,这篇文章主要想谈谈爬虫获取数据的这一部分。爬虫请注意网站的Robot.txt文件,不要让爬虫违法,也不要让爬虫对网站造成伤害。
反爬及反反爬概念的不恰当举例
基于很多原因(如服务器资源,保护数据等),很多网站是限制了爬虫效果的。
考虑一下,由人来充当爬虫的角色,我们怎么获取网页源代码?最常用的当然是右键源代码。
网站屏蔽了右键,怎么办?
拿出我们做爬虫中最有用的东西 F12(欢迎讨论)
同时按下F12就可以打开了(滑稽)
源代码出来了!!
在把人当作爬虫的情况下,屏蔽右键就是反爬取策略,F12就是反反爬取的方式。
讲讲正式的反爬取策略
事实上,在写爬虫的过程中一定出现过没有返回数据的情况,这种时候也许是服务器限制了UA头(user-agent),这就是一种很基本的反爬取,只要发送请求的时候加上UA头就可以了…是不是很简单?
其实一股脑把需要不需要的Request Headers都加上也是一个简单粗暴的办法……
有没有发现网站的验证码也是一个反爬取策略呢?为了让网站的用户能是真人,验证码真是做了很大的贡献。随验证码而来的,验证码识别出现了。
说到这,不知道是先出现了验证码识别还是图片识别呢?
简单的验证码现在识别起来是非常简单的,网上有太多教程,包括稍微进阶一下的去噪,二值,分割,重组等概念。可是现在网站人机识别已经越发的恐怖了起来,比如这种:
简单讲述一下去噪二值的概念
将一个验证码
变成
就是二值,也就是将图片本身变成只有两个色调,例子很简单,通过python PIL库里的
Image.convert("1")
就能实现,但如果图片变得更为复杂,还是要多思考一下,比如
如果直接用简单方式的话 就会变成
思考一些这种验证码应该怎么识别?这种时候 去噪 就派上了用处,根据验证码本身的特征,可以计算验证码的底色和字体之外的RGB值等,将这些值变成一个颜色,将字体留出。示例代码如下,换色即可
for x in range(0,image.size[0]):
for y in range(0,image.size[1]):
# print arr2[x][y]
if arr[x][y].tolist()==底色:
arr[x][y]=0
elif arr[x][y].tolist()[0] in range(200,256) and arr[x][y].tolist()[1] in range(200,256) and arr[x][y].tolist()[2] in range(200,256):
arr[x][y]=0
elif arr[x][y].tolist()==[0,0,0]:
arr[x][y]=0
else:
arr[x][y]=255
arr是由numpy得到的,根据图片RGB值得出的矩阵,读者可以自己尝试完善代码,亲自实验一下。
细致的处理之后图片可以变成
识别率还是很高的。
在验证码的发展中,还算清晰的数字字母,简单的加减乘除,网上有轮子可以用,有些难的数字字母汉字,也可以自己造轮子(比如上面),但更多的东西,已经足够写一个人工智能了……(有一种工作就是识别验证码…)
再加一个小提示:有的网站PC端有验证码,而手机端没有…
下一个话题!
反爬取策略中比较常见的还有一种封IP的策略,通常是短时间内过多的访问就会被封禁,这个很简单,限制访问频率或添加IP代理池就OK了,当然,分布式也可以…
IP代理池->左转Google右转baidu,有很多代理网站,虽然免费中能用的不多 但毕竟可以。
还有一种也可以算作反爬虫策略的就是异步数据,随着对爬虫的逐渐深入(明明是网站的更新换代!),异步加载是一定会遇见的问题,解决方式依然是F12。以不愿透露姓名的网易云音乐网站为例,右键打开源代码后,尝试搜索一下评论
数据呢?!这就是JS和Ajax兴起之后异步加载的特点。但是打开F12,切换到NetWork选项卡,刷新一下页面,仔细寻找,没有秘密。
哦,对了 如果你在听歌的话,点进去还能下载呢…
仅为对网站结构的科普,请自觉抵制盗版,保护版权,保护原创者利益。
如果说这个网站限制的你死死的,怎么办?我们还有最后一计,一个强无敌的组合:selenium + PhantomJs
这一对组合非常强力,可以完美模拟浏览器行为,具体的用法自行百度,并不推荐这种办法,很笨重,此处仅作为科普。
热心网友
时间:2022-04-28 06:28
应对反爬策略的方法:1、模拟正常用户。反爬虫机制还会利用检测用户的行为来判断,例如Cookies来判断是不是有效的用户。
2、动态页面*。有时候发现抓取的信息内容空白,这是因为这个网站的信息是通过用户的XHR动态返回内容信息。解决这种问题就要爬虫程序对网站进行分析,找到内容信息并抓取,才能获取内容。
3、降低IP访问频率。有时候平台为了阻止频繁访问,会设置IP在规定时间内的访问次数,超过次数就会禁止访问。所以绕过反爬虫机制可以降低爬虫的访问频率,还可以用IPIDEA代理IP换IP解决*。
热心网友
时间:2022-04-28 07:46
我的经验是,大量的相关文章+合理的站内链接+稳定的更新频率。
如何做好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、辅以文章内链导入链接