【2024-12-30分享】影刀RPA高级考试操作题2 源码分享

完整源码:https://hyk416.cn/archives/HqnEUzAWicon-default.png?t=O83Ahttps://hyk416.cn/archives/HqnEUzAW
原题目

进入这个网站:点击访问,获取排行榜中所有电影的相关数据(具体字段参考下面的要求明细),并存入指定数据库中。
要求如下:

  1. 数据库信息:IP:43.143.30.32 端口号:3306 用户名:yingdao 密码:9527 库名:ydtest 表名:movies(注意,该>数据库只开放了写入权限,无法查询)
  2. 字段及数据格式参考(多名导演用英文逗号分隔开,提交人为影刀学院用户名!位于学院首页右上角):

    image.png

  3. 元素对象都要使用xpath表达式获取(禁止使用【批量数据抓取】指令)
  4. 使用编码版完成所有操作
  5. 该网站具备反爬虫机制,频繁发送请求可能导致访问被禁止
测试结果

1.png

Python代码
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
 
# 使用方法
# 安装pymysql包
# 主流程使用“调用模块”指令,选择Python模块,选择函数“main”,传入参数submitter(影刀学院用户名),执行即可
# 题目中的网站具备反爬虫机制,不建议访问过快,可在代码最后一行调整随机停顿时间范围
# URL:https://hyk416.cn/archives/HqnEUzAW
# GuoKe - 过客
# 2024-12-28 9:59:04
 
import xbot
from xbot import print, sleep
from .package import variables as glv
import time
import pymysql
import re
from xbot import web
import random
 
def get_directors(web_dg):
    """获取导演信息,如果有多个导演,使用英文逗号分隔"""
    directors = []
    try:
        director_elements = web_dg.find_all_by_xpath('//dt[text()="导演"]/following-sibling::dd[not(preceding-sibling::dt[text()="演员"])]')
        for element in director_elements:
            if element and element.get_text():
                directors.append(element.get_text().strip())
    except Exception as e:
        print(f"获取导演信息时发生错误: {e}")
    return ', '.join(directors)
 
def format_data(data):
    """格式化数据以符合数据库字段类型"""
    name, release_year, production_area, poster_link, director, box_office, submitter = data
    
    # 转换数据类型
    try:
        release_year = int(release_year)
    except (ValueError, TypeError):
        release_year = 0  # 或者其他默认值
 
    # 处理票房单位
    if isinstance(box_office, str):
        box_office = box_office.strip()
        if '万' in box_office:
            box_office = box_office.replace('万', '')
            try:
                box_office = round(float(box_office), 0)  # 四舍五入到整数
            except (ValueError, TypeError):
                box_office = 0  # 或者其他默认值
        elif '亿' in box_office:
            box_office = box_office.replace('亿', '')
            try:
                box_office = round(float(box_office) * 10000, 0)  # 四舍五入到整数
            except (ValueError, TypeError):
                box_office = 0  # 或者其他默认值
        else:
            try:
                box_office = round(float(box_office.replace(',', '')), 0)  # 四舍五入到整数
            except (ValueError, TypeError):
                box_office = 0  # 或者其他默认值
    else:
        box_office = 0  # 如果不是字符串,默认设置为0
 
    return (name, release_year, production_area, poster_link, director, int(box_office), submitter)
 
def main(submitter):
    mydb = None
    mycursor = None
    web_page = None
    web_dg = None
 
    try:
        # 创建数据库连接
        mydb = pymysql.connect(
            host="43.143.30.32",
            port=3306,
            user="yingdao",
            password="9527",
            database="ydtest",
            charset='utf8'
        )
        mycursor = mydb.cursor()
        
        # SQL插入语句,使用参数化查询
        sql = """
        INSERT INTO movies (电影名称, 上映年份, 制片地区, 海报链接, 导演, 票房, 提交人)
        VALUES (%s, %s, %s, %s, %s, %s, %s)
        """
 
        # 打开首页
        web_page = xbot.web.create(url="https://www.endata.com.cn/BoxOffice/BO/History/Movie/Alltimedomestic.html")
        random_sleep()
        
        while True:
            # 获取当前页的所有电影链接
            quanbu = web_page.find_all_by_xpath('//tbody/tr/td/a')
            if not quanbu:
                print("未找到电影链接")
                break
 
            for dys in quanbu:
                if not dys:
                    continue
 
                movie_url = 'https://www.endata.com.cn' + dys.get_attribute('href')
                
                web_dg = xbot.web.create(url=movie_url)
                random_sleep()
                
 
# 完整代码:https://hyk416.cn/archives/HqnEUzAW
# 完整代码:https://hyk416.cn/archives/HqnEUzAW
# 完整代码:https://hyk416.cn/archives/HqnEUzAW
# 完整代码:https://hyk416.cn/archives/HqnEUzAW
# 完整代码:https://hyk416.cn/archives/HqnEUzAW

UiPath目前已掌握的程度(单选) 刚刚起步学习 已经通过L1:FoundationTraining 已通过L2:OrchestratorTraining 已通过L3:AdvancedTraining 在https://platform.uipath.com/中注册账号并登录;这里建议全部使用英文,不要用中文。至于注册的步骤,想必大家都很清楚,我就不用再啰嗦了。 注册完之后,登录到系统中,增加点击Services,增加一个自己的账户。 增加服务时,填写里面的个数时,尽量根据下面的提示,有2个可用,就填写2,有1个可用,就填写1. 点击自己刚刚新增的账户,就会进入到管理界面 可以在左下角设定界面的语言。 启动本地机器人,会显示在屏幕的右下角。 点击鼠标右键,会出现下面的界面,选择【OrchestratorSettings】 复制机器名称【Machine Name】 切换到Orchestrator管理界面,增加一个标准机器,并将复制的机器名称粘贴到这里 点击加号,选择【标准机器人】,粘贴刚刚复制的机器名称,点配置 点击下图中的编辑,即可查看MachineKey 新建一个标准机器人,输入本地计算机的账号和密码,类型为Development 创建步骤如下: 切换到环境,新建一个环境 输入新环境的名称,点击创建 在新建的环境中,指定刚刚新建的机器人 点击计算机,选择刚刚建立的标准机器,复制MachineKey 点击本地机器人,选择连接Orchestrator, A:在URL中输入第一步的网址 B:在MachineKey中,粘贴MachineKey 最后一步:在本机机器人连接成功的状态下,点击发布,即可将本地流程发布到Orchestrator上。 发布成功之后会弹出下面的框 目前本地机器人流程还是空的 发布之后,我们切换到Orchestrator上,选择流程,点击加号,选择我们刚刚发布的流程,最后点击创建。 现在我们在左键点击屏幕右下角的本地机器人图标,会出现 点击最右侧的下载图标,进行安装,安装好之后,点击它即可执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

即是过客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值