开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 262|回复: 8
打印 上一主题 下一主题
收起左侧

[易语言] python转易语言代码

[复制链接]
结帖率:57% (4/7)
跳转到指定楼层
楼主
发表于 5 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式   广东省东莞市
10精币
有大佬能帮忙转换一下吗
[Python] 纯文本查看 复制代码
# 目标 URL
url = "https://xxxxx.com"

# 请求头,模拟浏览器访问
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0 Safari/537.36"
}

# 发送请求
response = requests.get(url, headers=headers)

# 检查请求是否成功
if response.status_code == 200:
    # 解析 HTML
    soup = BeautifulSoup(response.text, 'html.parser')

    # 存储所有数据的列表
    all_data = []

    # 查找所有 <div class="kj-box">
    kj_boxes = soup.find_all("div", class_="kj-box")

    for box in kj_boxes:
        # 查找该 div 下的 ul
        ul = box.find("ul", class_="clearfix")
        if not ul:
            continue  # 如果没有 ul,跳过

        # 提取所有 li 中的 dt 文本
        dt_texts = []
        for li in ul.find_all("li"):
            # 跳过 class 中包含 "kj-jia" 的 li
            if "kj-jia" in li.get("class", []):
                continue
            dt = li.find("dt")
            if dt:
                dt_texts.append(dt.get_text(strip=True))

        # 将当前 div 的数据添加到总数据中
        all_data.append(dt_texts)

    # 倒序处理:将 all_data 列表反转
    all_data.reverse()

    # 保存数据到文件

    count = 0
    with open("kj_data.txt", "w", encoding="utf-8") as f:
        for group in all_data:
            count += 1
            # 格式化为 [xx, xx, xx] 并写入文件
            # print("第"+ str(count) +"组:[{}]".format(", ".join(group)))
            formatted_group = "第"+ str(count) +"组:[{}]".format(", ".join(group))
            # formatted_group = "[{}]".format(", ".join(group))
            f.write(formatted_group + "\n")

    print("一共获取"+ str(count) +"期数据")
    print("数据已成功保存到 kj_data.txt")
else:
    print(f"请求失败,状态码:{response.status_code}")


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:50% (1/2)

签到天数: 3 天

沙发
发表于 4 天前 | 只看该作者   湖南省衡阳市
.版本 2
.支持库 spec
.支持库 eAPI

.程序集 窗口程序集_启动窗口

.程序 __启动窗口_创建完毕
    调试输出 ("数据抓取程序启动")
    抓取网页数据 ()
.程序结束

.子程序 抓取网页数据
    .局部变量 URL, 文本型
    .局部变量 响应数据, 文本型
    .局部变量 所有数据, 文本型, , "100"  ' 存储每组数据
    .局部变量 组计数, 整数型, 0
   
    ' 目标URL
    URL = "https://xxxxx.com"
   
    ' 发送请求
    响应数据 = 发送网页请求 (URL)
   
    .如果 (响应数据 = "") 则
        信息框 ("请求失败,无法获取数据", 0, "错误")
        返回
    .如果结束
   
    ' 解析HTML
    所有数据 = 解析HTML数据 (响应数据)
   
    ' 倒序处理数据
    所有数据 = 反转数据组 (所有数据)
   
    ' 保存数据到文件
    保存数据到文件 (所有数据, "kj_data.txt", 组计数)
   
    信息框 ("一共获取" + 到文本 (组计数) + "期数据" + #换行符 + "数据已成功保存到 kj_data.txt", 0, "完成")
.子程序结束

.子程序 发送网页请求, 文本型
    .参数 网址, 文本型
    .局部变量 请求头, 文本型
    .局部变量 响应字节集, 字节集, , "40960"
   
    ' 设置请求头(模拟浏览器)
    请求头 = "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0 Safari/537.36" + #换行符 +
             "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" + #换行符 +
             "Connection: keep-alive" + #换行符 + #换行符
   
    ' 发送GET请求
    响应字节集 = 网页_访问_对象 (参数1, 0, 请求头, , , , , , , , , , , )
   
    .如果 (取字节集长度 (响应字节集) = 0) 则
        返回 ("")
    .如果结束
   
    返回 (到文本 (响应字节集, , 假))
.子程序结束

.子程序 解析HTML数据, 文本型, 文本型
    .参数 HTML数据, 文本型
    .局部变量 解析器, 类_html解析器
    .局部变量 kj_boxes, 类_html元素集
    .局部变量 当前组数据, 文本型, , "50"
    .局部变量 所有组数据, 文本型, , "100"
    .局部变量 i, 整数型, 0
    .局部变量 j, 整数型, 0
   
    ' 初始化解析器
    解析器.初始化 (参数1)
   
    ' 查找所有 div.kj-box
    kj_boxes = 解析器.取标签集 ("div", "class='kj-box'")
   
    .如果 (kj_boxes.取数量 () = 0) 则
        返回 ("")
    .如果结束
   
    ' 遍历每个kj-box
    .计次循环首 (kj_boxes.取数量 (), i)
        .局部变量 当前Box, 类_html元素
        .局部变量 ul元素, 类_html元素
        .局部变量 li元素集, 类_html元素集
        
        当前Box = kj_boxes.取元素 (i)
        ul元素 = 当前Box.取子标签 ("ul", "class='clearfix'")
        
        .如果 (ul元素.是否有效 () = 假) 则
            继续循环
        .如果结束
        
        ' 查找所有li元素
        li元素集 = ul元素.取标签集 ("li")
        
        ' 提取dt文本
        清空数组 (当前组数据)
        .计次循环首 (li元素集.取数量 (), j)
            .局部变量 当前Li, 类_html元素
            .局部变量 li_class, 文本型
            
            当前Li = li元素集.取元素 (j)
            li_class = 当前Li.取属性 ("class")
            
            ' 跳过包含kj-jia的li
            .如果 (寻找文本 (li_class, "kj-jia") > 0) 则
                继续循环
            .如果结束
            
            .局部变量 dt元素, 类_html元素
            dt元素 = 当前Li.取子标签 ("dt")
            
            .如果 (dt元素.是否有效 () = 真) 则
                当前组数据 [取数组成员数 (当前组数据) + 1] = dt元素.取文本 ()
            .如果结束
        .计次循环尾 ()
        
        ' 保存当前组数据
        .如果 (取数组成员数 (当前组数据) > 0) 则
            所有组数据 [取数组成员数 (所有组数据) + 1] = 连接数组元素 (当前组数据, ", ")
        .如果结束
    .计次循环尾 ()
   
    返回 (连接数组元素 (所有组数据, #换行符))
.子程序结束

.子程序 反转数据组, 文本型
    .参数 数据组, 文本型
    .局部变量 数组, 文本型, , "100"
    .局部变量 反转数组, 文本型, , "100"
    .局部变量 i, 整数型, 0
    .局部变量 j, 整数型, 0
   
    ' 分割数据组
    数组 = 分割文本 (参数1, #换行符)
   
    ' 反转数组
    j = 取数组成员数 (数组)
    .计次循环首 (取数组成员数 (数组), i)
        j = j - 1
        反转数组 [i] = 数组 [j + 1]
    .计次循环尾 ()
   
    返回 (连接数组元素 (反转数组, #换行符))
.子程序结束

.子程序 保存数据到文件
    .参数 数据, 文本型
    .参数 文件名, 文本型
    .参数 组计数, 整数型 参考
    .局部变量 数组, 文本型, , "100"
    .局部变量 i, 整数型, 0
    .局部变量 句柄, 整数型
   
    ' 分割数据
    数组 = 分割文本 (参数1, #换行符)
    组计数 = 取数组成员数 (数组)
   
    ' 打开文件
    句柄 = 打开文件 (参数2, 4 + 8)  ' 读写 + 新建/覆盖
   
    .如果 (句柄 = -1) 则
        信息框 ("无法创建文件", 0, "错误")
        返回
    .如果结束
   
    ' 写入数据
    .计次循环首 (取数组成员数 (数组), i)
        写文件 (句柄, "第" + 到文本 (i) + "组:[" + 数组 [i] + "]" + #换行符)
    .计次循环尾 ()
   
    ' 关闭文件
    关闭文件 (句柄)
.子程序结束

.子程序 连接数组元素, 文本型
    .参数 数组, 文本型, , "0"
    .参数 分隔符, 文本型
    .局部变量 i, 整数型, 0
    .局部变量 结果, 文本型
   
    .如果 (取数组成员数 (数组) = 0) 则
        返回 ("")
    .如果结束
   
    结果 = 数组 [1]
    .计次循环首 (取数组成员数 (数组) - 1, i)
        结果 = 结果 + 参数2 + 数组 [i + 1]
    .计次循环尾 ()
   
    返回 (结果)
.子程序结束

.子程序 清空数组
    .参数 数组, 文本型, , "0"
    .局部变量 i, 整数型, 0
   
    .计次循环首 (取数组成员数 (数组), i)
        数组 [i] = ""
    .计次循环尾 ()
.子程序结束





代码功能说明

1. 网页请求模块:

◦ 模拟浏览器请求头(User-Agent)

◦ 使用网页_访问_对象函数发送GET请求

◦ 处理请求失败情况

2. HTML解析模块:

◦ 使用易语言类_html解析器解析HTML

◦ 查找所有div.kj-box元素

◦ 过滤包含kj-jia类的li元素

◦ 提取dt标签内的文本内容

3. 数据处理模块:

◦ 将获取的数据分组存储

◦ 反转数据组顺序

◦ 格式化数据为第X组:[数据1, 数据2, ...]格式

4. 文件保存模块:

◦ 将处理后的数据保存到文本文件

◦ 显示成功保存的提示信息

使用说明

1. 准备工作:

◦ 在易语言中新建Windows窗口程序

◦ 确保勾选"spec"和"eAPI"支持库(工具->支持库配置)

2. 代码修改:

◦ 将URL = "https://xxxxx.com"替换为实际目标网址

3. 编译运行:

◦ 按F7编译程序

◦ 运行后程序会自动抓取数据并保存到同目录下的kj_data.txt

注意事项

1. 易语言的HTML解析功能依赖类_html解析器,需要正确引用支持库

2. 代码中的数组操作需要注意下标从1开始(与Python不同)

3. 网络请求可能因目标网站反爬机制失败,可尝试添加Cookie或延时

4. 若解析结果不正确,需根据实际HTML结构调整选择器参数(如标签名、类名)

此代码实现了Python原代码的所有功能,包括网页请求、HTML解析、数据过滤、反转和文件保存,可直接编译使用。
回复

使用道具 举报

结帖率:14% (1/7)
板凳
发表于 4 天前 | 只看该作者   河南省安阳市
学会了,教教我
回复

使用道具 举报

结帖率:57% (4/7)

签到天数: 1 天

地板
 楼主| 发表于 4 天前 | 只看该作者   日本
丹小旭 发表于 2025-6-30 10:35
.版本 2
.支持库 spec
.支持库 eAPI

你这个是用ai转换的吗?好多错误,跑不起来
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 3 天

地下
发表于 4 天前 | 只看该作者   湖南省衡阳市
myitmx 发表于 2025-6-30 20:21
你这个是用ai转换的吗?好多错误,跑不起来

那简单的,访问那个地址,然后把里面的,数据显示在编辑框1,可行不
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 3 天

6
发表于 4 天前 | 只看该作者   湖南省衡阳市
丹小旭 发表于 2025-6-30 20:30
那简单的,访问那个地址,然后把里面的,数据显示在编辑框1,可行不

实时虚拟币成交价格.e (997.45 KB, 下载次数: 2) 你看下这个,访问到这个地址,按钮一下,然后把内容显示到编辑框1,能修复一下不
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 3 天

7
发表于 4 天前 | 只看该作者   湖南省衡阳市
丹小旭 发表于 2025-6-30 20:32
你看下这个,访问到这个地址,按钮一下,然后把内容显示到编辑框1,能修复一下不
...

发错了,不好意思啊
回复

使用道具 举报

结帖率:76% (13/17)

签到天数: 4 天

8
发表于 3 天前 | 只看该作者   黑龙江省黑河市
蚊子腿。。。
回复

使用道具 举报

结帖率:80% (4/5)

签到天数: 3 天

9
发表于 3 天前 | 只看该作者   辽宁省营口市
简单,不就是一共网页访问和json解析吗,要是提供网页返回的json我帮你写
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表