全自动爬虫,你爱了么!解放双手的时刻!

目标

知道什么是Selenium
会使用Selenium
了解反爬机制
会使用Selenium抵制反爬
Selenium反爬案例

1. 什么是Selenium

Selenium是一个用于Web应用程序测试的工具
它可以真实的模拟浏览器,为爬虫开辟了良好的环境

2. Selenium的基本使用

  1. 根据平台下载需要的webdirver(此处以chrome为例,注意两者版本 最好一致)

  1. 项目根目录安装selenium-webdirver包
    将下载的包进行解压,把.exe文件放入项目根目录
  2. 依据官方文档写一个demo
    官方文档地址:https://www.npmjs.com/package/selenium-webdriver

2.1 Selenium的小demo

此案例为自动打开百度,搜索“前端”

  1. 预览
  2. 代码(注释清晰)

注意:全程自动,无需控制,我们可以用代码操控它来注册,登录,等等。

3. 反爬

3.1 反爬机制

  1. 有些 页会在服务器端做反爬机制,来抵制爬虫的骚扰
  2. 例如一些Ajax请求,在手动请求时,直接返回“操作频繁”
  3. 在伪造请求头后,前几次可以拿到数据,多次请求后又提示:“操作频繁”(简单爬虫无法爬取)
  4. 服务器发觉IP恶意请求,把IP纳入黑名单

3.2 抵制反爬机制

  1. 使用代理IP,让服务器无法封杀全部(通过代理IP不断爬取数据)
  2. 使用selenium制造的爬虫

4. Selenium抵制反爬

首先selenium如何抵制反爬:反爬机制只是针对爬虫的,例如:检查请求头、检查IP的请求频率(过高则封杀)等手段,而selenium打开的就是一个自动化的浏览器,和用户正常使用并无差别,所以再厉害的反扒技术,也无法将它干掉。

4.1 SeleniumAPI的学习

  • getText() 获取文本内容
  • sendKeys() 发送一些按键指令
  • click() 点击元素
  • 对于SeleniumAPI介绍的肯定没有官方文档详尽,so,直接奉上文档:http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/,记住常用操作,就ok啦

5. Selenium反爬案例

此案例为爬取拉勾 某地区所有的职位信息(此信息有服务器反爬保护)

5.1 案例步骤

  • 第一阶段:
  1. 使用driver打开拉勾 主页
  2. 找到杭州站点击一下
  3. 输入前端,按回车
  4. 使用dirver.findElement()找到所有条目项,根据需求分析页面元素,获取其文本内容
  • 第二阶段(自动翻页):
  1. 定义初始页码
  2. 获取数据中,最大页码
  3. 开始获取数据时,打印当前页码数
  4. 获取完一页后,当前页码自增,然后判断是否达到最大页码
  5. 查找下一页按钮并点击,实现自动翻页
  6. 翻页后递归调用获取数据的函数

5.2 效果预览

5.3 代码

注意:在翻页时会碰到,页面元素请求在art-templete模板渲染之前(无法获取元素),导致 错(抛异常)。

解决方案:

  1. 休眠,让程序等待页面渲染,本身selenium效率就一般,此方法pass
  2. 无限询问法,类似死循环,利用try{}catch{}使程序跑起来,用循环无限询问,直到不符合条件退出循环

总结:利用selenium可以做好多自动化的事情,解放咱的双手

6. 最后

写在最后:爬虫神通广大,用途也非常广泛,主要目的是为了实现自动化程序,解放咱的双手。帮助我们自动获取一些数据,测试软件,甚至自动操作浏览器做很多事情,但使用爬虫时我们需要注意,把它用在得当的地方。同时,在爬取目标 站之前,建议大家浏览该 站的robots.txt文件(url后输入/robots.txt),以确保自己爬取的数据在对方允许的范围之内。

源码获取记得加群:1136192749

 

文章知识点与官方知识档案匹配,可进一步学习相关知识小程序技能树首页概览3769 人正在系统学习中 Python源码

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月15日
下一篇 2020年7月15日

相关推荐