由于requests模块不能执行js,有的页面内容,我们在浏览器中可以看到,但是请求下来没有。
selenium模块:模拟操作浏览器,完成人的行为。
selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器。
模块安装:
下载驱动
驱动浏览器需要下载相应的驱动,谷歌要下谷歌的驱动,火狐要下火狐的驱动,并且版本要与当前浏览器对应。
这里我选择谷歌浏览器,首先查看当前谷歌浏览器的版本:
版本:
下载驱动,地址:CNPM Binaries Mirror (npmmirror.com),一定要下载对应的版本驱动,比如我谷歌浏览器版本为103.0.5060.134,就要下103.0.5060.134的驱动
下载对应操作系统即可。
导入模块:
初始化(打开浏览器):
在地址栏输入地址:
关闭标签:
关闭浏览器:
操作浏览器页面中的标签。
1.搜索标签
新版本:by=根据什么查找,value=查找的值
- find_element(by, value):找第一个
- find_elements(by, value):找所有
老版本:
2.点击标签
3.向输入框中写内容
4.清空
举例:打开百度搜索'博客园':
程序操作页面非常快,所以在取每个标签的时候,标签可能没有加载好,取标签时就会报错,所以需要设置等待时间。
如果标签找不到,就会等待,还找不到就会报错:
执行js用途:
- 普通滑屏,打开新标签
- 可以执行js代码,别人网站的变量,函数,都可以拿到并执行
滚动条到最底部
打开新标签
浏览器打开了多个选项卡,需要切换时:
browser.window_handles[0]代表第一个选项卡
browser.window_handles[1]代表第二个选项卡
浏览器前进:
浏览器后退:
不显示的打开浏览器的图形化界面,还能获取数据
XPath 是一门在 XML 文档中查找信息的语言。
举例:
网页中打开F12,找到标签,右键-->复制-->复制 Xpath,把值用在代码中即可。
由于有时候程序操作浏览器过快,有些标签会找不到等一些情况会出现报错,这时候可以用异常处理:
获取浏览器所有cookie:
登录博客园并保存cookie:
如果标签不好找出来,可以打开F12,找到标签位置,复制css选择器:
通过cookie达成登录效果
模拟按住鼠标拖动的效果,或者是在某个标签上的某个位置点击的效果,主要用来做验证码的破解(滑动验证码)。
导入:
初始化:得到动作链对象
添加动作的方法:
执行动作:上述方法需要语句执行动作
实战:
方式一:基于同一个动作链串行执行
方式二:不同的动作链,每次移动的位移都不同
简单的数字字母组合可以使用图像识别(python 现成模块),但是成功率不高,所以可以使用第三方打码平台(破解验证码平台),花钱,把验证码图片给它,它给你识别完,返回给你。
超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 (chaojiying.com)
超级鹰开发文档:
用超级鹰破解超级鹰验证码并登录: