爬虫和反爬
一、爬虫和反爬的斗争---反爬策略
1、反爬策略
-
通过user-agent客户端标识来判断是不是爬虫。
解决的办法:封装请求头:user-agent -
封ip
设置代理ip
-
通过访问频率来判断是否是非人类请求。
解决的办法:设置爬取间隔和爬取策略。
-
验证码
解决办法:识别验证码
-
页面数据不再直接渲染,通过前端js异步获取
a.通过selenium+phantomjs来获取数据
b.找到数据来源的接口(ajax接口) -
能获取列表页,就不获取详情页,为了避免增加请求的数量。
将详情页放到每条数据中心,第一次爬取先爬取列表。
第二次在从数据库中拿出详情页链接,在做第二次爬取。 -
能一次性获取,就不分页获取,正对ajax请求。可以将每一页获取数量调大
2.页面中的技术
-
js:他是一种语言。
获取页面的元素,可以对这些页面元素做些操作。
网络数据的获取 -
jquery:他就是一个js库,这个库可以使得js编程变得轻松容易。
-
ajax
同步请求和异步请求。
3.selenium+phantomjs
如果想要解决页面js的问题,主要需要一个工具,这个工具(具备浏览器的功能)可以帮助我们来运行获取到的js。
1、什么selenium?
selenium是一个web自动化测试工具。但是他本身不带浏览器的功能,他这工具就相当于一个驱动程序,通过这工具可以帮助我们自动操作一些具有浏览器功能外部应用。
2、什么是phantomjs?
phantomjs就是内置的无界面浏览器引擎。他可以像浏览器那样加载页面,运行页面中的js代码。
chromedriver.exe这个是谷歌浏览器驱动程序,通过这个程序可以使得selenium可以调用chrome浏览器。---有界面浏览器。
这两个的功能有界面的更加强大:很多网站还是可以识别你是不是用phantomjs来进行爬取的,也会被禁。但是有界面的chrome浏览器是不会被禁的,他就像一个真正用户在请求一样。
3、selenium和phantomjs的安装。
1.下载phantomjs和chromedriver.exe
搜索phanomjs镜像
2.安装:
解压
找到两个压缩包中exe文件,将其复制到anaconda/Scripts目录下面就ok了。
C:\Anaconda3\Scripts
C:\Anaconda3
3.测试:
在cmd中输入:phantomjs
chromedriver
4.selenium安装:pip isntall selenium==2.48.0