• 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()


  • 相关阅读:
    关于GitHub推送时发生Permission denied (publickey)的问题
    线性模型——机器学习(西瓜书)读书笔记
    梯度下降算法的简单理解
    PRML学习笔记第一章
    python函数学习之装饰器
    机器学习 概论
    Mybatis
    Nginx 常用配置清单
    接口,抽象类
    IntelliJ IDEA打war包
  • 原文地址:https://www.cnblogs.com/zhangheng1/p/8649688.html
Copyright © 2020-2023  润新知