今天主要讲一下在处理账号密码类的登陆问题,我这边采取的解决办法是selenium+chrome方案,包括的内容有滑块验证码的破解原理 ,点击样式的验证码的破解以及进入登陆界面后的cookie 转换成requests中的cookies(这里主要是提升爬取的效率):
这里直接上代码 :
from selenium import webdriver
options = webdriver.ChromeOptions()
#设置中文
options.add_argument('lang=zh_CN.UTF-8')
#更换头部
ua =UserAgent()
options.add_argument('user-agent="%s"' % ua.random)
# options.add_argument('--proxy-server=http://'+get_proxy())
# options.add_argument("--headless")
driver=webdriver.Chrome("D:\chromedriver.exe",chrome_options=options)
driver.maximize_window()
driver.get("https://passport.lagou.com/login/login.html")
sleep(4)
driver.find_element_by_xpath("/html/body/section/div[2]/div[1]/div[2]/form/div[1]/input").send_keys(username)
sleep(random.randint(1,2))
driver.find_element_by_xpath("/html/body/section/div[2]/div[1]/div[2]/form/div[2]/input").send_keys(password)
sleep(random.randint(1,2))
driver.find_element_by_xpath("/html/body/section/div[2]/div[1]/div[2]/form/div[5]/input").click()
sleep(random.randint(3,6))
接下来就是会出现验证码的情况:
这里分三种情况来讲述
1.没有出现任何验证码,那就直接进行登陆跳转了
2.出现滑块验证码的识别
这里先剖代码(这里使用春秋的滑块作为讲解,主要是拉钩变化无常,原理一样):
使用的验证码代理是超级鹰
from selenium import webdriver
from time import sleep
from PIL import Image
from selenium.webdriver import ActionChains
from chaojiying import Chaojiying_Client
#coding=utf-8
import sys
import importlib
importlib.reload(sys)
from PIL import Image,ImageDraw,ImageFont
import requests
from get_track import get_track
import random
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--start-maximized")
browser = webdriver.Chrome("D:/chromedriver.exe")
browser.get('https://account.ch.com/NonRegistrations-Regist')
sleep(2)
browser.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[3]/div[1]/div[2]").click()
sleep(1)
browser.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[3]/div[3]/div[1]/input").send_keys("995368208@qq.com")
browser.find_element_by_xpath('/html/body/div[3]/div[1]/div/div[3]/div[3]/div[2]/input').send_keys("h123456")
sleep(3)