下面我将为您提供两种最主流的方法,并附上完整的代码示例。

e语言 取网页源码到编辑框
(图片来源网络,侵删)

准备工作

在开始之前,请确保你的e语言程序已经包含了“互联网支持库”。

  1. 打开你的e语言编辑器。
  2. 在代码编辑区,点击鼠标右键。
  3. 选择“支持库...” -> “添加支持库...”。
  4. 在列表中找到并勾选 “互联网支持库”,然后点击“确定”。

使用 网页_访问 命令(推荐,最简单)

这是最直接、最简单的方法,适用于一次性获取整个网页的源码。

原理

网页_访问 命令会向指定的URL发送一个HTTP请求,并返回网页的完整HTML源码。

完整代码示例

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 网页地址, 文本型
.局部变量 源码, 文本型
' --- 设置你要访问的网页地址 ---
网页地址 = “https://www.baidu.com”
' --- 调用互联网支持库的命令获取源码 ---
' 注意:如果网页有编码问题(比如是GBK而不是UTF-8),源码可能会显示乱码。
' 这里我们以百度为例,它通常编码良好。
源码 = 网页_访问 (网页地址, , , , , 真, , )
' --- 判断是否成功获取 ---
.如果真 (取中间文本 (源码, 1, 10) = “<!DOCTYPE”)
    ' --- 成功,将源码显示到编辑框 ---
    编辑框1.内容 = 源码
    信息框 (“成功获取网页源码!”, 0, , )
.否则
    ' --- 失败,显示错误信息 ---
    编辑框1.内容 = “获取网页源码失败!请检查网络或网址是否正确。”
    信息框 (“获取网页源码失败!错误原因:” + 到文本 (源码), 0, , )
.如果结束
.子程序 __启动窗口_将被销毁
    ' --- 程序结束时,释放互联网支持库的资源 ---
    互联网_释放 ()

代码解释

  1. .局部变量 网页地址, 文本型: 定义一个变量来存储要访问的网址。
  2. .局部变量 源码, 文本型: 定义一个变量来存放从网页获取到的源码。
  3. 网页_访问 (...): 这是核心命令。
    • 第一个参数 网页地址 是我们要请求的URL。
    • 其他参数(用逗号隔开)是可选的,例如POST数据、超时时间、请求头等,我们这里使用最简单的形式。
    • 注意网页_访问 的返回值中,如果请求成功,返回的文本开头是 <!DOCTYPE...>;如果失败,返回的是错误信息字符串,我们可以利用这一点来判断成功与否。
  4. .如果真 (取中间文本 (源码, 1, 10) = “<!DOCTYPE”): 这是一个简单的判断,检查返回的源码开头是否是HTML文档声明,以此来确认是否成功获取。
  5. 编辑框1.内容 = 源码: 如果成功,就将获取到的 源码 变量赋值给编辑框的 属性,从而在界面上显示出来。
  6. 互联网_释放 (): 这是一个好习惯,在程序关闭前,显式地释放互联网支持库占用的资源,避免内存泄漏。

使用 网页_访问_到字节集 命令(更健壮,处理编码问题)

有些网页(尤其是国内的)可能使用 GBKGB2312 编码,而不是通用的 UTF-8,如果直接用 网页_访问,可能会得到乱码,这时,更健壮的方法是获取网页的原始字节流,然后根据网页头信息中的编码声明进行转换。

e语言 取网页源码到编辑框
(图片来源网络,侵删)

原理

  1. 使用 网页_访问_到字节集 获取网页的原始二进制数据(字节集)。
  2. 使用 网页_取编码 函数从网页源码的字节集中提取出 Content-Type 头中声明的字符编码。
  3. 使用 字节集_到文本 函数,并指定正确的编码,将字节集转换为可读的文本。

完整代码示例

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 网页地址, 文本型
.局部变量 字节源码, 字节集
.局部变量 源码文本, 文本型
.局部变量 编码, 文本型
' --- 设置你要访问的网页地址 ---
' 这里用一个典型的GBK编码网站作为示例
网页地址 = “http://news.ifeng.com/”
' --- 步骤1: 使用网页_访问_到字节集获取原始数据 ---
字节源码 = 网页_访问_到字节集 (网页地址, , , , , 真, , )
' --- 步骤2: 从字节集中提取字符编码信息 ---
' 这个函数会尝试从返回的HTTP头或HTML的meta标签中找到编码
编码 = 网页_取编码 (字节源码)
' --- 步骤3: 将字节集根据正确的编码转换为文本 ---
' 如果没有找到编码,则默认使用 UTF-8
.(编码 = “”)
    编码 = “UTF-8”
.否则
    ' 如果找到了编码,但e语言不认识,可以尝试一些别名
    .(编码 = “gb2312”)
        编码 = “GBK”
    .否则
        .(编码 = “chinese”)
            编码 = “GBK”
        .否则
            ' 如果是其他编码,直接使用
        .如果结束
    .如果结束
.如果结束
' 使用字节集_到文本进行转换,并忽略转换错误
源码文本 = 字节集_到文本 (字节源码, 编码, , 真)
' --- 判断是否成功获取 ---
.如果真 (取中间文本 (源码文本, 1, 10) = “<!DOCTYPE”)
    ' --- 成功,将源码显示到编辑框 ---
    编辑框1.内容 = 源码文本
    信息框 (“成功获取网页源码!(编码: ” + 编码 + “)”, 0, , )
.否则
    ' --- 失败,显示错误信息 ---
    编辑框1.内容 = “获取网页源码失败!请检查网络或网址是否正确。”
    信息框 (“获取网页源码失败!错误原因:” + 到文本 (源码文本), 0, , )
.如果结束
.子程序 __启动窗口_将被销毁
    ' --- 程序结束时,释放互联网支持库的资源 ---
    互联网_释放 ()

代码解释

  1. 字节源码 = 网页_访问_到字节集 (...): 这个命令不直接返回文本,而是返回网页的原始字节集,避免了e语言默认编码可能带来的问题。
  2. 编码 = 网页_取编码 (字节源码): 这是关键的一步,这个智能函数会分析返回的数据,告诉你网页是用什么编码写的(UTF-8, GBK, ISO-8859-1 等)。
  3. .(编码 = “”): 处理找不到编码的情况,我们给它一个默认值 UTF-8
  4. 字节集_到文本 (字节源码, 编码, , 真): 这是转换函数。
    • 第一个参数是 字节源码
    • 第二个参数是我们刚刚获取到的 编码
    • 第四个参数 表示“忽略错误”,如果转换过程中遇到无法识别的字节,它会跳过而不是报错,使程序更稳定。

总结与建议

特性 方法一 (网页_访问) 方法二 (网页_访问_到字节集)
优点 代码简单,一行搞定,适合快速开发。 非常健壮,能正确处理各种编码(如GBK),不会出现乱码。
缺点 可能在处理非UTF-8编码的网页时出现乱码。 代码稍多,需要理解字节集和编码转换的概念。
适用场景 个人学习、测试,或确定目标网站一定是UTF-8编码时。 生产环境、商业项目,需要抓取各种未知编码的网站时。

给你的建议:

  • 如果你只是随便写个小程序玩玩,或者你明确知道你要抓的网站是UTF-8编码的,用方法一就足够了。
  • 如果你希望你的程序更专业、更稳定,能够应对各种复杂的网页,请务必使用方法二,这是处理网页抓取问题的标准做法。
e语言 取网页源码到编辑框
(图片来源网络,侵删)