# 易语言爬虫代码:米画师最新作品爬取 ```e .版本 2 .程序集 爬虫程序 .程序集变量 网页内容, 文本型 .程序集变量 正则表达式, 正则表达式类 .程序集变量 画师名数组, 文本型, , "0" .程序集变量 点赞数数组, 文本型, , "0" .程序集变量 标签数组, 文本型, , "0" .程序集变量 当前日期, 文本型 .子程序 _启动子程序, 整数型 .局部变量 索引, 整数型 .局部变量 结果文件, 文本型 当前日期 = 取日期文本 (取现行时间 (), "-") 结果文件 = 取运行目录 () + "\米画师作品_" + 当前日期 + ".txt" 爬取米画师数据 () 删除文件 (结果文件) 写到文件 (结果文件, "米画师当日最新作品数据 (" + 当前日期 + "):" + #换行符 + #换行符) .计次循环首 (取数组成员数 (画师名数组), 索引) 写到文件 (结果文件, "作品 " + 到文本 (索引) + ":" + #换行符, 真) 写到文件 (结果文件, "画师: " + 画师名数组 [索引] + #换行符, 真) 写到文件 (结果文件, "点赞数: " + 点赞数数组 [索引] + #换行符, 真) 写到文件 (结果文件, "标签: " + 标签数组 [索引] + #换行符 + #换行符, 真) .计次循环尾 () 信息框 ("数据爬取完成,已保存到:" + 结果文件, 0, , ) 返回 (0) .子程序 爬取米画师数据 .局部变量 网页请求, 网页访问类 .局部变量 作品块数组, 文本型, , "0" .局部变量 作品块, 文本型 .局部变量 临时文本, 文本型 网页请求.初始化 () 网页内容 = 网页请求.访问网页 ("https://www.mihuashi.com/artworks", , , , , , , , , , , , , ) ' 检查是否获取到网页内容 .如果真 (网页内容 = "") 信息框 ("获取网页内容失败", 0, , ) 返回 () .如果真结束 ' 提取所有作品块 正则表达式.创建 ("<div class=""artwork-item"".*?<\/div><\/div><\/div>", 网页内容) 作品块数组 = 正则表达式.取匹配文本数组 () .计次循环首 (取数组成员数 (作品块数组), 索引) 作品块 = 作品块数组 [索引] ' 提取画师名 正则表达式.创建 ("<a class=""username"" href="".*?"">(.*?)<\/a>", 作品块) .如果 (正则表达式.取匹配数量 () > 0) 画师名数组 [索引] = 正则表达式.取子匹配文本 (1, 1) .否则 画师名数组 [索引] = "未知" .如果结束 ' 提取点赞数 正则表达式.创建 ("<span class=""like-count"">(\d+)<\/span>", 作品块) .如果 (正则表达式.取匹配数量 () > 0) 点赞数数组 [索引] = 正则表达式.取子匹配文本 (1, 1) .否则 点赞数数组 [索引] = "0" .如果结束 ' 提取标签 正则表达式.创建 ("<span class=""tag"">(.*?)<\/span>", 作品块) 临时文本 = "" .计次循环首 (正则表达式.取匹配数量 (), 标签索引) .如果 (标签索引 > 1) 临时文本 = 临时文本 + ", " .如果结束 临时文本 = 临时文本 + 正则表达式.取子匹配文本 (标签索引, 1) .计次循环尾 () 标签数组 [索引] = 临时文本 .计次循环尾 () .子程序 取日期文本, 文本型, , 返回格式为YYYY-MM-DD的日期文本 .参数 时间, 日期时间型 .局部变量 年, 整数型 .局部变量 月, 整数型 .局部变量 日, 整数型 年 = 取年份 (时间) 月 = 取月份 (时间) 日 = 取日 (时间) 返回 (格式化文本 ("%04d-%02d-%02d", 年, 月, 日)) ``` ## 代码说明 1. 这段代码使用易语言实现了一个爬取米画师网站最新作品的功能 2. 主要爬取内容包括:画师名称、作品点赞数和标签内容 3. 爬取的数据会按当天日期保存到文本文件中 ## 使用说明 1. 需要易语言5.9或更高版本运行 2. 需要"网页访问类"和"正则表达式类"支持库 3. 运行后会生成一个以当天日期命名的文本文件,包含所有爬取的数据 ## 注意事项 1. 网站可能有反爬机制,频繁请求可能导致IP被封 2. 网页结构变化时需要调整正则表达式匹配规则 3. 商业用途需遵守米画师网站的使用条款 ## 额外逻辑点 1. 正则表达式匹配可能因网页结构微小变化而失效,需要定期检查更新 2. 点赞数可能包含"k"等缩写形式,当前代码仅处理纯数字情况 3. 标签提取未做去重处理,同一标签可能在不同位置重复出现 [2025-07-13 22:15:14 | AI写代码神器 | 1312点数解答]