一、反爬策略
1、请求头
——user-agent
——referer
——cookie
2、访问频率限制
——代理池
——再用户访问高峰期进行爬取,冲散日志。12-13 7-10
——设置等待时长。time.sleep(3)
3、ajax异步请求,用接口获取数据
4、能一次性获取的数据,绝不发送第二次请求(获取数据的过程中尽量减少请求次数)
5、页面内容是js代码
selenium+phantomjs的组合进行页面内容的获取
二、html页面的技术
1、js:页面在请求html的过程中,服务器返回html,同时还会请求js文件。
2、jqery:js的库,方便js开发。
3、ajax:web的异步请求技术
三、selenium和phantomjs
1、什么是selenium?
selenium一个web自动化测试工具。【但是它本身是不带浏览器】。这个工具其实就是作为一些外部工具驱动来使用的,可以控制一些外部应用来完成自动化测试。
2、phantomjs
是一个内置无界面浏览器引擎。--无界面可以提高程序运行速度。
因为phantomjs是一个浏览器引擎,所以他最大的功能就是执行页面的js代码。
3、安装selenium和phantomjs
selenium安装:pip install selenium==2.48.0
phantomjs安装:百度phantomjs镜像--->下载一个Windows版本的————>phantomjs-2.1.1-windows.zip
可视化的chrome浏览器插件:---chromedriver安装:
下载:百度:chromedriver镜像
(1)保证chrome是正版。
(2)查看自己chrome的版本号:73.0.3683.86
(3)找一个和自己版本号最接近的版本下载。
将下载好的exe文件复制到:C:\Anaconda3\Scripts
四、selenium的使用
步骤
1、创建驱动
driver = webdrivre.Phantomjs()
2、请求url
driver.get(url)
3、等待
有三种等待方式:
(1)强制等待:time.sleep(2)
(2)隐式等待:driver.implicitly_wait(20)
(3)显示等待:等待设定的条件加载完成为止
第二种和第三种等待,如果在最大等待时长内还没有完成等待条件,就会抛出timeout异常。