注册
登录
提问时间:2019/5/17 15:03:45    楼主:未知网友   阅读量:149

在爬虫工作中,总会遇到一些困难,遇到一些挫折,它们总是不想让我们一帆风顺,不是封我们IP,就是返回一堆乱七八糟的东西,甚至什么也不返回,给你一片空白,让你自己去猜。那么,世道如此艰难,要如何才能顺利的完成爬虫工作任务呢?

一、分析目标网站数据模块

拿到一个网站时,并不是马上埋头苦干写爬虫代码,而是要先分析目标网站的数据模块,就拿某电商网站来说,会有产品信息,价格信息,评论信息,销量信息,促销信息等等;又比如某信息综合网站,会有娱乐新闻,体育新闻,科技新闻,三农新闻等等,同时每个版块下面可能又会有各种分类。

二、编写demo,分析网站结构

先模拟HTTP请求目标网站,查看网站响应的数据信息是什么样子,正常访问时是可以得到列表的数据以及进入列表的详细链接,再通过链接采集得到每个模块的详细的数据包。

三、分析目标网站反爬虫策略

正常发出去的HTTP请求到目标网站,会返回200状态,说明请求合法被接受,而且可以看到返回的数据。但如果触发了对方的反爬虫机制,那么就会将IP列入异常黑名单,再也不能正常访问了。那么怎么分析目标网站的反爬虫策略呢,只有不停的去尝试,比如一个IP访问多少次会触发,短时间访问多少次会触发,还有一些其他方面的限制,比如验证码、cookies等等。通过不断尝试,渐渐了然于心。

四、数据分析,代理IP池要求

我们通过需要获取多少数据,可以大概知道需要访问多少网页;通过目标网站的反爬策略,可以大概知道需要多少代理IP,需要多大的代理IP池。假如要访问100万个页面,每个IP可以访问100个页面后会触发反爬机制,那么大概需要1万左右不重复的代理IP;假如每次爬取一个页面需要10秒,加上抓取频率控制5秒,100个页面需要1500秒,可以得出单个IP的使用时间大概需要30分钟左右,当然,这只是个大概的数字,也不一定准确,毕竟目标网站的响应时间不是固定的,频率控制也是随机的,而且在抓取过程中也会有其他情况发生。

五、数据存储,设计数据库

抓取的数据量比较大的话,数据库的设计也很重要,合理的设计,存取和管理的效率也会提高很多,这里就不多说了。