破解滑动验证码
使用python破解滑动验证码后获取cookie, 用于爬取数据,这里是获取到cookie存到redis,不费话了,上代码
import re
import redis
from selenium.webdriver.chrome.options import Options
#from urllib.request import urlretrieve
from PIL import Image
from selenium.webdriver.common.action_chains import ActionChains
import pymysql
from urllib.request import urlretrieve
import json
import random
import time
from selenium import webdriver
from ctypes import *
import requests
from novel_spider.config import mysql
from novel_spider.config import redis as rdsconfig
class yuewen():
"""
初始化属性,传入url地址,驱动路径,浏览器窗口最大化,伪造ua
"""
def __init__(self):
self.url = 'https://open.yuewen.com/'
"""
开启webdriver服务
"""
def new_browser(self):
chrome_options = Options()
#chrome_options.add_argument("--no-sandbox")
#chrome_options.add_argument('--disable-dev-shm-usage')
#chrome_options.add_argument('--disable-gpu')
#chrome_options.add_argument('--headless')
self.driver = webdriver.Chrome(options=chrome_options)
"""
关闭webdriver服务
"""
def close_browser(self):
self.driver.quit()
"""
输入用户名,适应linux系统
"""
def input_username_password(self,account, password):
self.driver.get(self.url)
time.sleep(1)
self.driver.find_element_by_class_name('op-button-sign').click() # 找到class为op-button-sign的元素点击
time.sleep(1)
self.driver.find_element_by_xpath("//p[contains(text(),'账号登录')]").click()
self.driver.find_element_by_class_name('el-input__inner').send_keys(account)
self.driver.find_element_by_name('password').send_keys(password)
time.sleep(3)
self.driver.find_element_by_xpath("//span[contains(text(),'登录')]").click()
"""
获取验证码阴影图和原图
:return:
"""
def get_img(self):
self.driver.switch_to.frame('tcaptcha_iframe')
time.sleep(3)
# 获取有阴影的图片
src = self.driver.find_element_by_id