网络爬虫技术是指按照一定的规则,自动地抓取万维网信息的技术。爬虫一般分为数据采集,处理,储存三个部分。
一般网站从三个方面反爬虫:a.用户请求的Headers;b.用户行为;c.网站目录和数据加载方式。大多数网站都从a、b来反爬虫。一些应用ajax的网站会采用c,增大了爬取的难度(防止静态爬虫使用ajax技术动态加载页面)。
1、最常见的反爬虫策略——用户请求的Headers。
解决方法:伪装header。
大部分网站都会对用户请求头Headers的User-Agent进行检测,部分网站会对Referer进行检测。对于这类反爬可以直接在代码中添加Headers,将浏览器的User-Agent复制到代码的Headers中;
或者将Referer值修改为目标网站域名。修改或者添加Headers就能很好地绕过检测Headers的反爬。
2、基于用户行为反爬虫
部分网站是通过检测用户行为反爬,例如同一IP短时间内多次访问某个页面,或者同一账户短时间内进行多次相同操作。
解决方法:
- 对于“同一IP短时间内多次访问某个页面”的情况,使用IP代理就可以解决。也可以先爬取网上免费的代理ip,检测后将可用的ip全部保存起来。这样以后可以有规律地更换ip进行爬虫(如:每请求几次更换一个ip);
- 对于“同一账户短时间内进行多次相同操作”的情况,可以在每次请求后随机间隔一定时间再进行下一次请求
3、动态页面的反爬虫
上述的几种情况多是静态页面,对于另一部分网站是需要通过ajax请求得到我们需要爬取的数据。
解决方法:Selenium+PhantomJS
Selenium:自动化web测试解决方案,完全模拟真实的浏览器环境,完全模拟基本上所有的用户操作;
PhantomJS :一个没有图形界面的浏览器。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。