我们在爬虫过程中难免会遇到一些拦路虎,比如各种各样的验证码,时不时蹦出来,这时候我们需要去识别它来继续我们的工作,接下来我将爬取网一些滑动验证码,然后通过百度的EasyDL平台进行数据标注,创建模型,训练模型,测试模型,看看是否能返回目标框的相应坐标,然后我们再使用selenium进行滑动到相应位置,这样就破解了验证码。后面我将用几个系列来阐述一下我们的内容。

首先,我们先看下爬取的效果,详情点击公众号地址,有视频。

思路:一开始我去查看能不能直接调用接口获取图片,发现看看不是那么容易,找到了相应的接口,但是模拟接口却很困难,里面有token,jsonp之类的。后来直接截取图片好了,简单粗暴。

步骤如下:

前提是有python环境,先把python安装好。

1.pip install selenium

2.下载chrome_driver.exe,利用它来启动谷歌浏览器,以下是网址,我们需要下载电脑谷歌对应的版本,我下载的是chromedriver_win32.zip,版本号是84.0.4147.89,解压内有一个exe文件,放到谷歌的安装目录。

https://sites.google.com/a/chromium.org/chromedriver/downloads

3.添加环境变量,将谷歌的安装目录加入环境变量。

4.测试

 from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://dun.163.com/trial/jigsaw')

5.测试成功之后,我们就可以开始爬取滑动验证码图片,上代码

 driver = webdriver.Chrome()
driver.implicitly_wait(3)
driver.maximize_window()
driver.get('https://dun.163.com/trial/jigsaw')
# 鼠标移动到此元素
yidun_tips = driver.find_element_by_class_name('yidun_tips')
action = ActionChains(driver)
for i in range(1000):
action.move_to_element(yidun_tips).perform()
driver.implicitly_wait(5)
driver.save_screenshot('webpages/'+str(int(time.time()))+".png")
driver.find_element_by_class_name("yidun_refresh").click()
driver.implicitly_wait(5) sleep(2)
driver.quit()
 

这段代码会打开网页,找到相应元素,触发hover事件,自动点击refresh按钮,刷新图片,然后我们进行截取保存。

6.截取验证码区域

 import cv2 as cv
import os # 获取文件名
file_names = os.listdir("webpages/")
print(file_names)
# 文件名拼接路径
file_list = [os.path.join("./webpages/",file) for file in file_names] #裁剪坐标为[y0:y1, x0:x1]
for i in range(len(file_list)):
src=cv.imread(file_list[i])
dst=src[651:851,945:1345]
cv.imwrite('dist/'+(str(i+1))+'.png',dst)
cv.waitKey()

后面我们就打包数据集上传到EasyDL平台,进行数据标注,训练。

selenium自动爬取网易易盾的验证码的更多相关文章

  1. 用selenium 自动爬取某一本小说章节及其内容,并存入数据库中

    from selenium import webdriver import pymysql from selenium.webdriver.support.ui import WebDriverWai ...

  2. 如何利用python爬取网易新闻

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: LSGOGroup PS:如有需要Python学习资料的小伙伴可以 ...

  3. selenium异步爬取(selenium+Chromedriver)

    在我们进行数据爬去的过程中,我们有时候会遇到异步加载信息的情况,以豆瓣电影分来排行榜为例,当我们在查看数据的过程中,会发现网页源码中并不包含我们想要的全部数据,但是当我们在进行向下滚动的时候,数据会一 ...

  4. 【原创】Python 网易易盾滑块验证

    本文仅供学习交流使用,如侵立删! 记一次 网易易盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.PIL.numpy.scipy.matplotlib 分析 ...

  5. 使用Jsoup 爬取网易首页所有的图片

    package com.enation.newtest; import java.io.File; import java.io.FileNotFoundException; import java. ...

  6. python网络爬虫之使用scrapy自动爬取多个网页

    前面介绍的scrapy爬虫只能爬取单个网页.如果我们想爬取多个网页.比如网上的小说该如何如何操作呢.比如下面的这样的结构.是小说的第一篇.可以点击返回目录还是下一页 对应的网页代码: 我们再看进入后面 ...

  7. 网易易盾最新一代Java2c加固究竟有什么厉害之处?

    导语:几个月前,网易易盾正式推出Java2c加固.它以独有的"静态保护"技术,使得应用程序中的代码出现"下沉",达到不可逆的效果,兼顾"冷热启动时间& ...

  8. 如何手动写一个Python脚本自动爬取Bilibili小视频

    如何手动写一个Python脚本自动爬取Bilibili小视频 国庆结束之余,某个不务正业的码农不好好干活,在B站瞎逛着,毕竟国庆嘛,还让不让人休息了诶-- 我身边的很多小伙伴们在朋友圈里面晒着出去游玩 ...

  9. [python爬虫] Selenium定向爬取PubMed生物医学摘要信息

    本文主要是自己的在线代码笔记.在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容.        PubMed是一个免费的搜寻引擎,提供生物医学方 ...

随机推荐

  1. Linux软件服务管理

    学习该课程之前先学习linux的软件安装管理 1.linux的运行级别有下面几种类型 在后面的服务启动管理之中会被使用到 [root@weiyuan httpd-2.4.20]# runlevel N ...

  2. Python初识类与对象

    Python初识类与对象 类与对象 世界观角度分析类与对象 类是一个抽象的概念,而对象是一个实体的存在,对象由类创造而出,每个对象之间互相独立互不影响,一个对象可以同时拥有多个类的方法,实例化就是通过 ...

  3. npm安装加速

    1.通过config命令 npm config set registry https://registry.npm.taobao.org npm info underscore (如果上面配置正确这个 ...

  4. Spring AOP学习笔记05:AOP失效的罪因

    前面的文章中我们介绍了Spring AOP的简单使用,并从源码的角度学习了其底层的实现原理,有了这些基础之后,本文来讨论一下Spring AOP失效的问题,这个问题可能我们在平时工作中或多或少也会碰到 ...

  5. pycharm远程连接vagrant虚拟机中mariadb数据库

    1.虚拟机数据库设置--重启数据库 (1)vi /etc/my.cnf bind = 0.0.0.0 (2).远程不能用root用户连,得新建用户 select host,user from mysq ...

  6. 前端走进机器学习生态,在 Node.js 中使用 Python

    这次给大家带来一个好东西,它的主要用途就是能让大家在 Node.js 中使用 Python 的接口和函数.可能你看到这里会好奇,会疑惑,会不解,我 Node.js 大法那么好,干嘛要用 Python ...

  7. iview表单验证--数字必填+校验

    直接使用: { required: true, type:"integer", message:"请填写整数", trigger: "blur&quo ...

  8. SpringBoot-多数据源配置-Mysql-SqlServer-Oracle

    Maven依赖 <!-- mysql的jdbc依赖 --> <dependency> <groupId>mysql</groupId> <arti ...

  9. 硬刚 lodash 源码之路,compact & concat

    前置 本篇随笔包含 _.compact 和 _.concat 及其依赖的工具函数. 你可能需要一些 JavaScript 基础知识才能看懂一些没有注释的细节. compact _.compact(ar ...

  10. tyvj 1198 矩阵连乘——区间dp

    tyvj 1198 矩阵连乘 题目描述 一个n*m矩阵由n行m列共n*m个数排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算 ...