selenium+ChromeOptions登录北京市住房公积金

import re
import time
import ydm
from lxml import etree
from selenium import webdriver
from PIL import Image
# from selenium.webdriver.support.wait import WebDriverWait
# from selenium.webdriver.support import expected_conditions as EC
# from selenium.webdriver.common.by import By

class Login:
def __init__(self,username,password):
self.list = []
option = webdriver.ChromeOptions()
option.add_argument('--start-maximized') # 最大化
option.add_argument('--headless') # 无界面
self.driver = webdriver.Chrome(chrome_options=option)
# self.driver = webdriver.Chrome()
self.url = 'https://www.bjgjj.gov.cn/wsyw/wscx/gjjcx-login.jsp'
self.username = username
self.password = password

def wait_input(self, ele, str):
'''减慢账号密码的输入速度'''
for i in str:
ele.send_keys(i)
time.sleep(0.2)

def login(self):
try:
dr = self.driver
dr.maximize_window()
dr.get(self.url)
user = dr.find_element_by_xpath('//*[@id="bh5"]')
user.clear()
self.wait_input(user,self.username)
# user = dr.find_element_by_xpath('//*[@id="bh5"]').send_keys(self.username)
time.sleep(0.5)
pw = dr.find_element_by_xpath('//*[@id="mm5"]')
pw.clear()
self.wait_input(pw,self.password)
dr.get_screenshot_as_file('im.png')
imgs = dr.find_element_by_xpath('//*[@id="login_tab_0"]/div/div[3]/span[2]/img')
location = imgs.location
size = imgs.size
rangle = (
int(location['x']), int(location['y']), int(location['x'] + size['width']),
int(location['y'] + size['height']))
img = Image.open('im.png')
im = img.crop(rangle) # 裁剪图片
im.save('cath.png')
time.sleep(2)
username = '云打码账号'
password = '密码'
appid = 4359
appkey = '0715011dad66b60956de51723d5509c2'
filename = 'cath.png'
codetype = 1004
timeout = 60
if (username == 'username'):
print('请设置好相关参数再测试')
else:
yundama = ydm.YDMHttp(username, password, appid, appkey)
balance = yundama.balance()
print('balance: %s' % balance)
# 开始识别,图片路径,验证码类型ID,超时时间(秒),识别结果
cid, result = yundama.decode(filename, codetype, timeout)
code = result
print(code)
dr.find_element_by_xpath('//*[@id="login_tab_0"]/div/div[3]/input').send_keys(code)
time.sleep(0.5)
#点击登录
dr.find_element_by_xpath('//*[@id="login_tab_0"]/div/div[4]/input[1]').click()
time.sleep(0.5)
       #保存cookies,解析页面直接调用
cookie = [item["name"] + "=" + item["value"] for item in dr.get_cookies()]
cookiestr = ';'.join(item for item in cookie)
with open('cookie.txt', 'w') as f:
f.write(cookiestr)
f.close()
#曾经所在公司url
for i in range(4,10):
try:
company = etree.HTML(dr.page_source).xpath('//*[@id="new-mytable"]/tbody/tr[' + str(i) + ']/td[2]/div/a/text()')[0]
print(company)
company_url = etree.HTML(dr.page_source).xpath('//*[@id="new-mytable"]/tbody/tr['+str(i)+']/td[2]/div/a/@onclick')[0]
url = 'https://www.bjgjj.gov.cn/wsyw/wscx/gjj_cx.jsp?nicam=' + re.findall('.*?nicam=(.*?)","".*?', company_url)[0]
self.list.append(url)
except:
break
with open('company_url.txt','w+')as f:
for url in self.list:
f.write(url+' ')
print(url)
f.close()
dr.quit()
except Exception as e:
print(e)
self.driver.quit()
finally:
self.driver.quit()





l = Login('账户', '密码')
l.login()


原文地址:https://www.cnblogs.com/zhangheng1/p/8649688.html