长春网站公司有哪些内容切实加强门户网站建设
长春网站公司有哪些内容,切实加强门户网站建设,厦门营销型网站建设,个人博客html易语言开发从入门到精通#xff1a;补充篇网络编程进阶实用爬虫开发API集成代理IP配置异步请求防封禁优化 #x1f680;#x1f310;#x1f577;️
1.34.1 学习目标 #x1f3af;
作为《易语言开发从入门到精通》的网络编程进阶实用爬虫开发补充篇自动化数据采集与API集成…易语言开发从入门到精通补充篇·网络编程进阶实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化 ️1.34.1 学习目标 作为《易语言开发从入门到精通》的网络编程进阶实用爬虫开发补充篇·自动化数据采集与API集成实战·电商/金融/政务数据分析加速器本章将帮你构建完整的网络编程进阶爬虫开发思维体系完成3个高实用价值的项目大幅提升数据采集和处理效率达成以下4重可落地的明确目标构建网络编程进阶的三层思维框架掌握“基础通信HTTPS/异步/代理→数据解析JSON/XML/正则/XPath→实战应用API测试/爬虫/数据监控”的三层标准化开发模式掌握网络编程核心进阶技能学会HTTPS通信、异步并发请求、动态代理IP配置、HTTP请求头优化、Cookie自动管理掌握主流数据解析方法精通常用的JSON、XML、HTML数据解析学会使用XPath、CSS选择器、正则表达式提取复杂网页信息开发3个高实用价值的项目完成API接口测试工具、京东商城评论自动采集爬虫、全国天气数据实时监控与邮件推送系统掌握网络编程的性能优化与防封禁经验学习请求频率控制、用户代理池、会话保持、验证码识别简单字符验证码、异常处理的方法。1.34.2 网络编程进阶实用爬虫开发的核心思维框架——三层标准化开发模式 网络编程进阶实用爬虫开发的本质是通过网络协议获取数据并对数据进行解析和处理三层标准化开发模式可以帮助你快速解决90%以上的项目需求。1.34.2.1 三层标准化开发模式的功能划分✅第一层基础通信层功能负责与目标服务器建立网络连接发送HTTP/HTTPS请求接收服务器响应常用方法使用精易模块的“网页_访问对象”函数支持GET/POST/异步/代理使用WinHTTP支持库的HTTP通信函数注意事项要处理HTTPS证书验证问题要配置合理的请求超时时间要使用正确的HTTP方法✅第二层数据解析层功能负责解析服务器响应的数据提取需要的信息常用方法使用JSON支持库解析JSON格式数据使用XML支持库解析XML格式数据使用正则表达式支持库解析HTML格式数据使用精易模块的“网页_取节点文本”函数支持XPath、CSS选择器注意事项要处理数据格式错误的问题要优化解析效率要避免解析过程中的内存泄漏✅第三层实战应用层功能负责将解析后的数据进行处理和展示如保存到数据库、导出到Excel文件、发送邮件、定时任务常用方法使用SQLite支持库保存数据到数据库使用eExcel支持库导出数据到Excel文件使用精易模块的“邮件_发送邮件”函数发送邮件使用时钟组件实现定时任务注意事项要处理数据存储和导出的错误要优化定时任务的执行效率要避免资源泄漏1.34.3 网络编程进阶实用爬虫开发深度实战——3个高实用价值的项目 现在我们来开发3个高实用价值的网络编程进阶爬虫开发项目这些项目将用到所有三层标准化开发模式的技术覆盖API接口测试、电商评论采集、天气数据监控。1.34.3.1 项目1API接口测试工具 项目需求分析✅功能需求基础功能支持GET和POST请求方式支持设置请求参数URL参数、表单参数、JSON参数支持设置请求头User-Agent、Referer、Cookie支持发送HTTP和HTTPS请求数据解析功能支持解析JSON格式的响应数据支持格式化显示响应数据支持导出响应数据到JSON文件辅助功能支持显示请求耗时支持显示响应状态码支持保存和加载测试用例支持测试用例的管理✅非功能需求界面设计符合现代审美扁平化风格、蓝色渐变主题功能分区明确请求设置区、响应显示区、辅助功能区用户体验请求参数和请求头支持批量导入和导出响应数据支持搜索和复制添加请求失败的提示信息响应时间程序响应时间不超过1秒请求响应时间不超过10秒界面设计组件箱拖拽属性表配置①新建Windows窗口程序打开易语言官方IDE点击“文件→新建→Windows窗口程序→确定”②添加容器组件从组件箱中拖拽3个分组框组件到“_启动窗口”上属性名分别为“_分组框_请求设置区”“_分组框_响应显示区”“_分组框_辅助功能区”标题分别为“请求设置区”“响应显示区”“辅助功能区”位置分别为(10,10)、(10,250)、(520,10)宽度分别为500px、500px、300px高度分别为230px、240px、480px③添加请求设置区组件1个组合框组件属性名分别为“_组合框_请求方式”标题为“请求方式”位置为(20,15)宽度为80px高度为25px列表项为“GET|POST”1个编辑框组件属性名分别为“_编辑框_URL”标题为“请求URL”位置为(110,15)宽度为380px高度为25px2个单选框组件属性名分别为“_单选框_URL参数”“_单选框_表单参数”“_单选框_JSON参数”标题分别为“URL参数”“表单参数”“JSON参数”位置分别为(20,50)、(20,80)、(20,110)2个编辑框组件属性名分别为“_编辑框_请求参数”“_编辑框_请求头”位置分别为(20,140)、(20,180)宽度分别为460px、460px高度分别为50px、30px多行显示为真1个按钮组件属性名分别为“_按钮_发送请求”标题为“发送请求”位置为(200,210)宽度为120px高度为30px④添加响应显示区组件1个编辑框组件属性名分别为“_编辑框_响应状态码”标题为“响应状态码”位置为(20,15)宽度为100px高度为25px可用为假1个编辑框组件属性名分别为“_编辑框_请求耗时”标题为“请求耗时”位置为(130,15)宽度为100px高度为25px可用为假1个超文本浏览框组件属性名分别为“_超文本浏览框_响应数据”位置为(20,45)宽度为460px高度为180px1个按钮组件属性名分别为“_按钮_格式化响应数据”标题为“格式化响应数据”位置为(360,15)宽度为120px高度为25px⑤添加辅助功能区组件2个标签组件属性名分别为“_标签_测试用例名称”“_标签_测试用例描述”标题分别为“测试用例名称”“测试用例描述”位置分别为(20,20)、(20,50)2个编辑框组件属性名分别为“_编辑框_测试用例名称”“_编辑框_测试用例描述”位置分别为(120,20)、(120,50)宽度分别为160px、160px高度统一为25px3个按钮组件属性名分别为“_按钮_保存测试用例”“_按钮_加载测试用例”“_按钮_删除测试用例”标题分别为“保存测试用例”“加载测试用例”“删除测试用例”位置分别为(20,80)、(130,80)、(240,80)宽度分别为100px、100px、100px高度统一为25px1个列表框组件属性名分别为“_列表框_测试用例列表”位置为(20,120)宽度为260px高度为340px1个时钟组件属性名分别为“_时钟_请求超时”时钟周期为10000可见为假1个通用对话框组件属性名分别为“_通用对话框_保存测试用例”“_通用对话框_加载测试用例”“_通用对话框_导出响应数据”类型分别为“保存文件”“打开文件”“保存文件”过滤器分别为“测试用例文件 (.json)|.json|所有文件 (.)|.”“测试用例文件 (.json)|.json|所有文件 (.)|.”“JSON文件 (.json)|.json|所有文件 (.)|.”初始目录为程序的运行目录代码实现分模块详细代码注释模块1启动窗口事件驱动代码.版本 2 .支持库 spec .支持库 eFile .支持库 iext .支持库 json .支持库 wininet .程序集 窗口程序集_启动窗口 .程序集变量 请求参数类型, 整数型 0URL参数1表单参数2JSON参数 .程序集变量 请求开始时间, 整数型 存储请求开始时间 .程序集变量 请求超时, 逻辑型 存储请求超时状态 .子程序 _启动窗口_创建完毕 设置请求参数类型的默认值 _单选框_URL参数.选中 真 请求参数类型 0 初始化请求头的默认值 _编辑框_请求头.内容 “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36” .子程序 _启动窗口_将被销毁 停止请求超时的时钟 _时钟_请求超时.时钟周期 0 .子程序 _单选框_URL参数_被单击, , , 选中 .如果真 (选中 真) 请求参数类型 0 .如果真结束 .子程序 _单选框_表单参数_被单击, , , 选中 .如果真 (选中 真) 请求参数类型 1 .如果真结束 .子程序 _单选框_JSON参数_被单击, , , 选中 .如果真 (选中 真) 请求参数类型 2 .如果真结束 .子程序 _按钮_发送请求_被单击 检查请求URL是否为空 .如果真 (_编辑框_URL.内容 “”) 信息框 (“请输入请求URL”, #错误图标, “API接口测试工具”) 返回 () .如果真结束 检查请求参数是否为空如果请求方式为POST .如果真 (_组合框_请求方式.现行选中项 1 且 _编辑框_请求参数.内容 “”) 信息框 (“请输入请求参数”, #错误图标, “API接口测试工具”) 返回 () .如果真结束 开始发送请求 _时钟_请求超时.时钟周期 10000 请求超时 假 请求开始时间 取启动时间 () 发送HTTP/HTTPS请求 .局部变量 请求结果, 文本型 请求结果 发送HTTP请求 () 停止请求超时的时钟 _时钟_请求超时.时钟周期 0 检查请求是否超时 .如果真 (请求超时 真) 信息框 (“请求超时”, #错误图标, “API接口测试工具”) 返回 () .如果真结束 显示请求结果 显示请求结果 (请求结果) .子程序 发送HTTP请求, 文本型 返回响应数据 .局部变量 请求对象, 对象 请求对象.创建 (“WinHttp.WinHttpRequest.5.1”) 打开请求 请求对象.数值方法 (“Open”, _组合框_请求方式.内容, _编辑框_URL.内容, 假) 设置请求头 .局部变量 请求头数组, 文本型, , 0 请求头数组 分割文本 (_编辑框_请求头.内容, #换行符, ) .局部变量 i, 整数型 .计次循环首 (取数组成员数 (请求头数组), i) .如果真 (请求头数组 [i] “”) 继续循环 () .如果真结束 .局部变量 请求头数组_temp, 文本型, , 0 请求头数组_temp 分割文本 (请求头数组 [i], “:”, ) .如果真 (取数组成员数 (请求头数组_temp) 2) 继续循环 () .如果真结束 请求对象.数值方法 (“SetRequestHeader”, 请求头数组_temp [1], 文本_删除前导和尾随空格 (请求头数组_temp [2])) .计次循环尾 () 设置请求超时时间 请求对象.写属性 (“SetTimeouts”, 10000, 10000, 10000, 10000) 发送请求 .如果真 (_组合框_请求方式.现行选中项 0) GET请求 请求对象.数值方法 (“Send”, ) .如果真结束 .如果真 (_组合框_请求方式.现行选中项 1) POST请求 .判断开始 (请求参数类型 0) URL参数 请求对象.数值方法 (“Send”, ) .判断 (请求参数类型 1) 表单参数 请求对象.数值方法 (“Send”, _编辑框_请求参数.内容) .判断 (请求参数类型 2) JSON参数 请求对象.数值方法 (“SetRequestHeader”, “Content-Type”, “application/json”) 请求对象.数值方法 (“Send”, _编辑框_请求参数.内容) .默认 .判断结束 .如果真结束 读取响应数据 .局部变量 响应数据, 文本型 响应数据 请求对象.读属性 (“ResponseText”) 释放请求对象 请求对象.释放 () 返回 (响应数据) .子程序 显示请求结果, , , 参数响应数据 .参数 响应数据, 文本型 显示响应状态码 _编辑框_响应状态码.内容 到文本 (WinHttp取响应状态码 (_编辑框_URL.内容)) 显示请求耗时 _编辑框_请求耗时.内容 到文本 (取启动时间 () - 请求开始时间) “ms” 显示响应数据 _超文本浏览框_响应数据.地址 “about:blank” _超文本浏览框_响应数据.执行JS (“document.write(” 文本_替换 (响应数据, “”, “\\”) “)”) .子程序 _按钮_格式化响应数据_被单击 格式化JSON格式的响应数据 .局部变量 格式化响应数据, 文本型 格式化响应数据 JSON格式化 (_超文本浏览框_响应数据.地址) 显示格式化后的响应数据 _超文本浏览框_响应数据.地址 “about:blank” _超文本浏览框_响应数据.执行JS (“document.write(” 文本_替换 (格式化响应数据, “”, “\\”) “)”) .子程序 _时钟_请求超时_周期事件 请求超时 请求超时 真 _时钟_请求超时.时钟周期 0 .子程序 文本_删除前导和尾随空格, 文本型 参数原文本返回删除前导和尾随空格后的文本 .参数 原文本, 文本型 .局部变量 i, 整数型 i 1 删除前导空格 .判断循环首 (i ≤ 取文本长度 (原文本) 且 (取文本中间 (原文本, i, 1) “ ” 或 取文本中间 (原文本, i, 1) #制表符)) i i 1 .判断循环尾 () 删除尾随空格 .局部变量 j, 整数型 j 取文本长度 (原文本) .判断循环首 (j ≥ i 且 (取文本中间 (原文本, j, 1) “ ” 或 取文本中间 (原文本, j, 1) #制表符)) j j - 1 .判断循环尾 () 返回 (取文本中间 (原文本, i, j - i 1))测试调试和优化经验①测试调试测试GET和POST请求方式是否正常测试URL参数、表单参数、JSON参数是否正常测试请求头是否正常测试响应状态码和请求耗时是否正常测试响应数据的格式化是否正常②优化经验优化请求超时时间的设置根据网络状况调整超时时间优化请求对象的释放避免资源泄漏优化响应数据的显示使用HTML的pre标签保留格式1.34.3.2 项目2京东商城评论自动采集爬虫 项目需求分析✅功能需求基础功能支持输入京东商品ID采集该商品的评论数据评论内容、评论时间、评论人、评论星级支持采集多页评论数据解析功能使用JSON支持库解析评论数据支持提取评论内容的关键词辅助功能支持显示采集进度支持保存评论数据到SQLite数据库支持导出评论数据到Excel文件支持设置请求频率✅非功能需求界面设计符合现代审美扁平化风格、红色主题功能分区明确商品设置区、采集设置区、进度显示区、数据展示区用户体验采集进度有实时显示添加采集失败的提示信息支持暂停和继续采集响应时间程序响应时间不超过1秒采集一页评论的时间不超过5秒✅防封禁需求支持设置请求频率如每隔1秒发送一次请求支持设置用户代理池支持设置Cookie界面设计组件箱拖拽属性表配置与API接口测试工具类似只需要修改组件的类型和位置即可。代码实现核心公共函数代码.版本 2 .支持库 spec .支持库 eFile .支持库 iext .支持库 eSQLite .支持库 json .支持库 wininet .子程序 京东评论自动采集, , , 参数商品ID采集页数 .参数 商品ID, 文本型 .参数 采集页数, 整数型 创建SQLite数据库连接 .局部变量 数据库连接, SQL连接句柄 数据库连接 SQL打开数据库 (取运行目录 () “/京东评论数据.db”) 检查数据库连接是否成功 .如果真 (数据库连接 0) 调试输出 (“SQLite数据库连接失败” SQL取错误信息 ()) 返回 () .如果真结束 创建京东评论数据表 SQL执行语句 (数据库连接, “CREATE TABLE IF NOT EXISTS jd_comment_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, product_id TEXT NOT NULL, comment_content TEXT NOT NULL, comment_time TEXT NOT NULL, commenter TEXT NOT NULL, comment_star INTEGER NOT NULL )”) 设置请求频率 .局部变量 请求频率, 整数型 请求频率 到数值 (_编辑框_请求频率.内容) 设置用户代理池 .局部变量 用户代理池, 文本型, , 0 用户代理池 分割文本 (_编辑框_用户代理池.内容, #换行符, ) 设置Cookie .局部变量 Cookie, 文本型 Cookie _编辑框_Cookie.内容 开始采集评论数据 .局部变量 采集成功数量, 整数型 采集成功数量 0 .局部变量 采集失败数量, 整数型 采集失败数量 0 .局部变量 i, 整数型 .计次循环首 (采集页数, i) 构造评论API接口的URL .局部变量 评论API接口URL, 文本型 评论API接口URL “https://club.jd.com/comment/productPageComments.action?productId” 商品ID “score0sortType5page” 到文本 (i - 1) “pageSize10” 发送HTTP请求 .局部变量 请求结果, 文本型 请求结果 发送HTTP请求_jd (评论API接口URL, 用户代理池, Cookie) 检查请求结果是否为空 .如果真 (请求结果 “”) 采集失败数量 采集失败数量 1 延迟 (请求频率 * 1000) 继续循环 () .如果真结束 解析评论数据 .局部变量 评论数据数组, 文本型, , 0 评论数据数组 解析京东评论数据 (请求结果) 检查评论数据数组是否为空 .如果真 (取数组成员数 (评论数据数组) 0) 采集失败数量 采集失败数量 1 延迟 (请求频率 * 1000) 继续循环 () .如果真结束 保存评论数据到SQLite数据库 .局部变量 j, 整数型 .计次循环首 (取数组成员数 (评论数据数组), j) .局部变量 评论数据, 文本型 评论数据 评论数据数组 [j] .局部变量 解析对象, JSON对象 解析对象.解析 (评论数据) .局部变量 评论内容, 文本型 评论内容 解析对象.取成员文本 (“content”) .局部变量 评论时间, 文本型 评论时间 解析对象.取成员文本 (“creationTime”) .局部变量 评论人, 文本型 评论人 解析对象.取成员文本 (“nickname”) .局部变量 评论星级, 整数型 评论星级 解析对象.取成员数值 (“score”) 插入评论数据到SQLite数据库 .局部变量 插入SQL语句, 文本型 插入SQL语句 “INSERT INTO jd_comment_data (product_id, comment_content, comment_time, commenter, comment_star) VALUES (” 商品ID “, ” 文本_替换 (评论内容, “”, “”) “, ” 评论时间 “, ” 文本_替换 (评论人, “”, “”) “, ” 到文本 (评论星级) “)” SQL执行语句 (数据库连接, 插入SQL语句) .计次循环尾 () 统计采集成功数量 采集成功数量 采集成功数量 取数组成员数 (评论数据数组) 显示采集进度 _编辑框_采集进度.内容 “正在采集第” 到文本 (i) “页共采集到” 到文本 (采集成功数量) “条评论” 延迟发送请求 延迟 (请求频率 * 1000) .计次循环尾 () 断开SQLite数据库连接 SQL关闭数据库 (数据库连接) 显示采集结果 _编辑框_采集成功数量.内容 到文本 (采集成功数量) _编辑框_采集失败数量.内容 到文本 (采集失败数量) 信息框 (“评论采集成功共采集” 到文本 (采集成功数量 采集失败数量) “条评论其中成功” 到文本 (采集成功数量) “条失败” 到文本 (采集失败数量) “条”, #信息图标, “京东商城评论自动采集爬虫”) .子程序 发送HTTP请求_jd, 文本型 参数URL用户代理池Cookie返回响应数据 .参数 URL, 文本型 .参数 用户代理池, 文本型, , 0 .参数 Cookie, 文本型 .局部变量 请求对象, 对象 请求对象.创建 (“WinHttp.WinHttpRequest.5.1”) 打开请求 请求对象.数值方法 (“Open”, “GET”, URL, 假) 设置请求头 .局部变量 用户代理, 文本型 用户代理 用户代理池 [取随机数 (1, 取数组成员数 (用户代理池))] 请求对象.数值方法 (“SetRequestHeader”, “User-Agent”, 用户代理) 请求对象.数值方法 (“SetRequestHeader”, “Referer”, “https://item.jd.com/” 取文本中间 (URL, 寻找文本 (URL, “productId”, , 真) 10, 10) “.html”) 请求对象.数值方法 (“SetRequestHeader”, “Cookie”, Cookie) 设置请求超时时间 请求对象.写属性 (“SetTimeouts”, 10000, 10000, 10000, 10000) 发送请求 请求对象.数值方法 (“Send”, ) 读取响应数据 .局部变量 响应数据, 文本型 响应数据 请求对象.读属性 (“ResponseText”) 释放请求对象 请求对象.释放 () 返回 (响应数据) .子程序 解析京东评论数据, 文本型, , 0 参数响应数据返回评论数据数组JSON格式 .参数 响应数据, 文本型 .局部变量 解析对象, JSON对象 解析对象.解析 (响应数据) .局部变量 评论数据数组, 文本型, , 0 .局部变量 评论列表, JSON数组 评论列表.取数组数据 (解析对象.取成员 (“comments”), ) .局部变量 i, 整数型 .计次循环首 (评论列表.取成员数 (), i) .局部变量 评论数据, 文本型 评论数据 评论列表.取成员对象 (i - 1).到JSON文本 () 加入成员 (评论数据数组, 评论数据) .计次循环尾 () 返回 (评论数据数组)测试调试和优化经验①测试调试测试输入商品ID是否正常测试采集多页评论是否正常测试请求频率控制是否正常测试用户代理池是否正常测试Cookie是否正常测试评论数据的保存和导出是否正常②优化经验优化请求频率控制根据京东的反爬机制调整请求频率优化用户代理池定期更新用户代理池优化Cookie管理定期更新Cookie优化评论数据的解析提高解析效率1.34.3.3 项目3全国天气数据实时监控与邮件推送系统 ☁️项目需求分析✅功能需求基础功能支持输入城市名称采集该城市的天气数据温度、湿度、风力、风向、天气状况支持设置采集频率数据解析功能使用JSON支持库解析天气数据辅助功能支持显示天气数据支持保存天气数据到SQLite数据库支持导出天气数据到Excel文件支持设置异常告警阈值如温度超过35℃支持发送邮件告警✅非功能需求界面设计符合现代审美扁平化风格、蓝色主题功能分区明确城市设置区、采集设置区、天气显示区、异常告警区用户体验天气数据有实时显示添加采集失败和异常告警的提示信息响应时间程序响应时间不超过1秒采集天气数据的时间不超过5秒界面设计组件箱拖拽属性表配置与API接口测试工具类似只需要修改组件的类型和位置即可。代码实现核心公共函数代码.版本 2 .支持库 spec .支持库 eFile .支持库 iext .支持库 eSQLite .支持库 json .支持库 wininet .支持库 anim .子程序 天气数据实时监控, , , 参数城市名称采集频率异常告警阈值 .参数 城市名称, 文本型 .参数 采集频率, 整数型 .参数 异常告警阈值, 小数型 创建SQLite数据库连接 .局部变量 数据库连接, SQL连接句柄 数据库连接 SQL打开数据库 (取运行目录 () “/天气数据.db”) 检查数据库连接是否成功 .如果真 (数据库连接 0) 调试输出 (“SQLite数据库连接失败” SQL取错误信息 ()) 返回 () .如果真结束 创建天气数据表 SQL执行语句 (数据库连接, “CREATE TABLE IF NOT EXISTS weather_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, city_name TEXT NOT NULL, temperature REAL NOT NULL, humidity REAL NOT NULL, wind_force TEXT NOT NULL, wind_direction TEXT NOT NULL, weather_condition TEXT NOT NULL, collection_time TEXT NOT NULL )”) 开始实时监控天气数据 .循环判断首 () 构造天气API接口的URL .局部变量 天气API接口URL, 文本型 天气API接口URL “https://free-api.heweather.net/s6/weather/now?location” 到半角 (城市名称) “key你的天气API密钥” 发送HTTP请求 .局部变量 请求结果, 文本型 请求结果 发送HTTP请求_weather (天气API接口URL) 检查请求结果是否为空 .如果真 (请求结果 “”) 延迟 (采集频率 * 1000) 继续循环 () .如果真结束 解析天气数据 .局部变量 天气数据, 文本型 天气数据 解析天气数据 (请求结果) 检查天气数据是否为空 .如果真 (天气数据 “”) 延迟 (采集频率 * 1000) 继续循环 () .如果真结束 显示天气数据 显示天气数据 (天气数据) 保存天气数据到SQLite数据库 保存天气数据到SQLite数据库 (数据库连接, 天气数据) 检查天气数据是否异常 检查天气数据是否异常 (天气数据, 异常告警阈值) 延迟发送请求 延迟 (采集频率 * 1000) .循环判断尾 (真) .子程序 发送HTTP请求_weather, 文本型 参数URL返回响应数据 .参数 URL, 文本型 .局部变量 请求对象, 对象 请求对象.创建 (“WinHttp.WinHttpRequest.5.1”) 打开请求 请求对象.数值方法 (“Open”, “GET”, URL, 假) 设置请求头 请求对象.数值方法 (“SetRequestHeader”, “User-Agent”, “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36”) 设置请求超时时间 请求对象.写属性 (“SetTimeouts”, 10000, 10000, 10000, 10000) 发送请求 请求对象.数值方法 (“Send”, ) 读取响应数据 .局部变量 响应数据, 文本型 响应数据 请求对象.读属性 (“ResponseText”) 释放请求对象 请求对象.释放 () 返回 (响应数据) .子程序 解析天气数据, 文本型 参数响应数据返回天气数据JSON格式 .参数 响应数据, 文本型 .局部变量 解析对象, JSON对象 解析对象.解析 (响应数据) .局部变量 天气数据, 文本型 .局部变量 天气数组, JSON数组 天气数组.取数组数据 (解析对象.取成员 (“HeWeather6”), ) .如果真 (天气数组.取成员数 () 0) 天气数据 天气数组.取成员对象 (0).取成员 (“now”).到JSON文本 () .如果真结束 返回 (天气数据) .子程序 检查天气数据是否异常, , , 参数天气数据异常告警阈值 .参数 天气数据, 文本型 .参数 异常告警阈值, 小数型 .局部变量 解析对象, JSON对象 解析对象.解析 (天气数据) .局部变量 温度, 小数型 温度 到数值 (解析对象.取成员文本 (“tmp”)) .如果真 (温度 异常告警阈值) 发送邮件告警 .局部变量 邮件内容, 文本型 邮件内容 “城市” _编辑框_城市名称.内容 “温度” 到文本 (温度) “℃已超过异常告警阈值” 到文本 (异常告警阈值) “℃” 精易模块.邮件_发送邮件 (“smtp.qq.com”, “你的QQ邮箱”, “你的QQ邮箱授权码”, “你的收件人邮箱”, “天气数据异常告警”, 邮件内容, , ) 显示异常告警信息 _列表框_异常告警.加入项目 (取现行时间 ().格式化 (“YYYY-MM-DD HH:MM:SS”) “ - ” 邮件内容) _列表框_异常告警.现行选中项 _列表框_异常告警.取项目数 () - 1 .如果真结束测试调试和优化经验①测试调试测试输入城市名称是否正常测试采集天气数据是否正常测试采集频率控制是否正常测试异常告警阈值设置是否正常测试邮件发送是否正常②优化经验优化采集频率控制根据天气API的调用次数限制调整采集频率优化邮件发送避免频繁发送邮件优化天气数据的解析提高解析效率1.34.4 网络编程的性能优化与防封禁经验——提升效率与避免被封 ️网络编程的性能优化和防封禁是两个非常重要的话题尤其是在开发爬虫项目时。为了帮助你提升程序的性能和避免被封我整理了一份网络编程的性能优化与防封禁经验分为性能优化和防封禁两个部分。1.34.4.1 性能优化 ✅使用异步并发请求使用精易模块的“网页_访问对象”函数的异步模式或者使用多线程技术同时发送多个请求提高处理效率✅使用分块处理处理大文件时将文件分为多个小块逐块处理避免内存不足✅使用缓存机制缓存常用的请求结果避免重复请求✅使用CDN加速使用CDN加速请求减少请求时间1.34.4.2 防封禁 ️✅设置请求频率设置合理的请求频率避免短时间内发送大量请求✅使用用户代理池使用大量的用户代理每次请求时随机更换用户代理✅使用代理IP池使用大量的代理IP每次请求时随机更换代理IP✅使用Cookie管理使用Cookie管理模拟用户登录避免被封✅使用验证码识别使用简单字符验证码识别技术自动识别验证码✅使用异常处理使用异常处理机制处理请求失败的情况1.34.5 网络编程常见问题排查手册 在网络编程进阶实用爬虫开发过程中你可能会遇到各种各样的问题有些问题看起来很简单但解决起来却很麻烦有些问题看起来很复杂但解决起来却很简单。为了帮助你快速解决这些问题我整理了一份网络编程常见问题排查手册分为五大类每类3个问题共15个。1.34.5.1 基础通信问题3个问题1发送HTTP请求失败问题现象发送HTTP请求失败返回空字符串。原因分析请求URL格式不正确目标服务器未响应请求超时时间设置过短网络连接失败解决方案检查请求URL格式是否正确检查目标服务器是否未响应调整请求超时时间检查网络连接是否失败问题2发送HTTPS请求失败问题现象发送HTTPS请求失败返回空字符串。原因分析请求URL格式不正确目标服务器的HTTPS证书无效请求超时时间设置过短网络连接失败解决方案检查请求URL格式是否正确使用精易模块的“网页_访问对象”函数该函数默认会忽略HTTPS证书验证问题调整请求超时时间检查网络连接是否失败问题3请求头设置不正确问题现象请求头设置不正确导致请求失败。原因分析请求头格式不正确请求头的属性值设置不正确缺少必要的请求头属性解决方案检查请求头格式是否正确检查请求头的属性值是否正确添加必要的请求头属性如User-Agent、Referer、Cookie1.34.6 补充篇总结与网络编程未来发展方向 1.34.6.1 本章核心收获✅构建网络编程进阶的三层思维框架掌握“基础通信→数据解析→实战应用”的三层标准化开发模式✅掌握网络编程核心进阶技能学会HTTPS通信、异步并发请求、动态代理IP配置、HTTP请求头优化、Cookie自动管理✅掌握主流数据解析方法精通常用的JSON、XML、HTML数据解析学会使用XPath、CSS选择器、正则表达式提取复杂网页信息✅开发3个高实用价值的项目完成API接口测试工具、京东商城评论自动采集爬虫、全国天气数据实时监控与邮件推送系统✅掌握网络编程的性能优化与防封禁经验学习请求频率控制、用户代理池、会话保持、验证码识别、异常处理的方法。1.34.6.2 网络编程未来发展方向网络编程的未来发展方向主要有以下5个AI辅助API测试进一步优化AI辅助API测试工具根据用户的需求自动生成测试用例AI辅助爬虫开发进一步优化AI辅助爬虫开发工具根据用户的需求自动构造URL和解析规则无代码API集成进一步完善无代码API集成平台让用户通过拖拽和配置的方式集成API低代码API开发进一步完善低代码API开发平台让用户通过简单的代码开发APIAI辅助防封禁使用AI技术识别和避免被封的风险 易语言开发从入门到精通的网络编程进阶实用爬虫开发补充篇·自动化数据采集与API集成实战·电商/金融/政务数据分析加速器至此结束愿你在易语言的世界里不断学习不断进步开发出更多“高效、稳定、防封禁”的网络编程和爬虫项目