python使用selenium组件写的爬虫Demo

本文介绍如何利用Selenium WebDriver实现自动化登录和账户余额查询的功能。通过Python脚本,模拟用户操作,包括输入账号密码、点击登录按钮、选择账户进行余额查询,并将结果格式化后保存至本地文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#coding=utf-8
from selenium import webdriver
import time
import re


def len_zh(data):
    temp = re.findall('[^a-zA-Z0-9.]+', data)
    count = 0
    for i in temp:
        count += len(i)
    return(count)


def get_format_line(aligin_type, str_list, width_list):
    line = ""
    for str_item, width_item in zip(str_list, width_list):
        zh = len_zh(str_item)
        if aligin_type == "L":
            line += str_item.ljust(width_item-zh)
        elif aligin_type == "M":
            line += str_item.center(width_item-zh)
        elif aligin_type == "R":
            line += str_item.rjust(width_item-zh)
    return line


def main():
    url = "https://custodian.chinaclear.cn/login.jsp"
    browser = webdriver.Ie()
    browser.get(url)
    time.sleep(7)
    #模拟登陆
    # name = browser.find_element_by_xpath("//*[@id='ptzh']") #输入平台账号
    # name.send_keys("htsc")
    userCode = browser.find_element_by_xpath("//*[@id='userCode']") #输入用户账号
    userCode.send_keys("002541")

    pwd = browser.find_element_by_xpath("//*[@id='pwd']") #输入密码
    pwd.send_keys("123456")
    browser.find_element_by_class_name("login_sub_btn").click() #点击登录
    time.sleep(7)

    browser.switch_to.default_content() #切换左侧iframe
    loginUser = browser.find_element_by_class_name("ui-top-user").text #获取登录用户
    loginUser = loginUser[4:]
    print(loginUser)

    browser.find_element_by_xpath("//*[@id='J_ui-layout-left_list']/ul/li[2]/span").click() #点开导航菜单
    browser.find_element_by_xpath("//*[@id='faZhyecx']").click()  #点击账户余额查询
    time.sleep(2)

    browser.switch_to.frame(browser.find_element_by_xpath("/html/body/div[1]/div[5]/div/div[2]/iframe")) #切换右侧iframe
    count = 0
    inputs = browser.find_elements_by_class_name("f-combo-list-div"); #获取下拉框所有账号
    width_list = [10, 28, 80, 20, 15] #格式化参数
    sdate = browser.find_element_by_id("sdate").get_attribute("value").replace("-", "") #获取搜索日期
    file_write_obj = open("D://dest.txt", 'w')
    file_write_obj.writelines(loginUser+"\n") #写入用户ID
    for i in range(1, len(inputs), 1): #循环取值
        count = count+1
        browser.find_element_by_class_name("f-combo-trigger").click()  # 点开下拉菜单
        path = "//*[@id='f-combo-szhhaccount-list-"+str(i)+"']"
        array = browser.find_element_by_xpath(path).text
        browser.find_element_by_xpath(path).click()   #选中第i个元素
        browser.find_element_by_xpath("//*[@id='btn_search']").click()   #点击查询
        time.sleep(2)
        result = browser.find_element_by_class_name('ui-jqgrid-btable').text
        if result != "":
            result = get_format_line("L", result.split(), width_list)
            file_write_obj.writelines(result)
        else:
            list = array.split(":")
            result = [sdate, list[0], list[1], "无", "无"]
            result = get_format_line("L", result, width_list)
            file_write_obj.writelines(result)
        file_write_obj.write('\n')
        print(count)
        print(result)
    file_write_obj.close()


if __name__ == '__main__':
    main()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值