开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 1729|回复: 33
收起左侧

[易源码分享] [我的爬虫日志04]爬取蔬菜价格,并自动发邮件

[复制链接]
发表于 2024-11-3 20:45:37 | 显示全部楼层 |阅读模式   辽宁省沈阳市
分享源码
界面截图:
是否带模块: -
备注说明: -
本代码可以实现自动爬取蔬菜价格,并发邮件通知自己,可以电脑上设置一个任务计划,让他每天自动获取
  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
p产品信息 
p_list产品信息0
返回文本型 
发送内容table文本型 
food_names文本型0
i整数型 
keyword文本型 
send_content文本型 
send_title文本型 
邮件返回文本型 
日志类_日志输出 
配置文件名文本型 
配置类_配置项 
SendEmail文本型 
pwd文本型 
ToEmail文本型 
配置文件名 = GetRunPath ()“\app.ini”
SendEmail = 配置.读项文本 (配置文件名, “Email”, “SendEmail”, , )
pwd = 配置.读项文本 (配置文件名, “Email”, “pwd”, , )
ToEmail = 配置.读项文本 (配置文件名, “Email”, “ToEmail”, , )
.if (SendEmail = “” pwd = “” ToEmail = “”)
fputs (, “邮件信息错误!!!”#换行符 )
return (0)

fputs (, “开始获取...”#换行符 )
日志.输出文件 (“开始获取...”, 0, )
food_names = { “土豆”, “番茄”, “胡萝卜”, “白菜”, “大葱”, “菜花”, “茄子”, “芸豆”, “芹菜”, “油菜”, “苹果”, “香蕉”, “橙子”, “草莓”, “西瓜”, “火龙果”, “水蜜桃”, “鸭梨”, “芒果”, “五花肉”, “梅花肉”, “纯瘦肉”, “带鱼”, “鲤鱼”, “草鱼”, “胖头鱼”, “东北大米”, “面粉”, “大豆油” }
.for (1, GetAryElementCount (food_names), 1, i)
keyword = food_names [i]
fputs (, “搜索:” + keyword + #换行符 )
日志.输出文件 (“搜索:” + keyword, 0, )
搜索食品价格 (keyword, p)
fputs (, p.p_name + “|” + p.p_price + “|” + p.unitInfo + “|” + p.p_place + “|” + p.publish_date + #换行符 )
日志.输出文件 (p.p_name + “|” + p.p_price + “|” + p.unitInfo + “|” + p.p_place + “|” + p.publish_date + keyword, 0, )
AddElement (p_list, p)
fputs (, “10秒后搜索下一个”#换行符 )
sleep (1000 × 10)
.next ()
send_content = 组装表格 (p_list)
send_title = “今日食品价格/”str (now ())
邮件返回 = 发送QQ邮件N (SendEmail, pwd, ToEmail, send_title, send_content)
.ife (邮件返回 = “ok”)
fputs (, “邮件发送成功”#换行符 )
日志.输出文件 (“邮件发送成功”, 0, )
fputs (, “邮件发送失败!!!”#换行符 )
日志.输出文件 (“邮件发送失败!!!”, 2, )

fputs (, “任务结束”#换行符 )
return (0)  ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
搜索食品价格逻辑型 
参数名类 型参考可空数组备 注
keyword文本型
产品信息产品信息
变量名类 型静态数组备 注
search_url文本型 
ret_headers文本型 
post_data文本型 
ret_json文本型 
search_content文本型 
p产品信息 
cookie文本型 
json类_json 
prodName文本型 
search_url = “http://www.xinfadi.com.cn/getPriceData.html”
post_data = “limit=1&prodName=”UrlEncode (keyword, 真, )
ret_json = HttpRequestRetTextUtf8Decode (search_url, 1, post_data, cookie, cookie, , , , , , )
.ife (json.解析 (ret_json, , ))
p.p_name = json.取属性 (“list”).取成员 (0, ).取通用属性 (“prodName”, )
p.p_price = json.取属性 (“list”).取成员 (0, ).取通用属性 (“avgPrice”, )“元”
p.unitInfo = json.取属性 (“list”).取成员 (0, ).取通用属性 (“unitInfo”, )
p.publish_date = json.取属性 (“list”).取成员 (0, ).取通用属性 (“pubDate”, )
p.p_place = json.取属性 (“list”).取成员 (0, ).取通用属性 (“place”, )
产品信息 = p
return ()
return ()

子程序名返回值类型公开备 注
组装表格文本型 
参数名类 型参考可空数组备 注
p_list产品信息产品信息数组
变量名类 型静态数组备 注
table文本型 
i整数型 
table = “”
table = table + “”
table = table + “”
table = table + “”
table = table + “”
table = table + “”
table = table + “”
table = table + “”
table = table + “”
.for (1, GetAryElementCount (p_list), 1, i)
table = table + “”
table = table + “”
table = table + “”
table = table + “”
table = table + “”
table = table + “”
table = table + “”
.next ()
table = table +
[tr][td]食品名称[/td][td]食品价格[/td][td]单位[/td][td]产地[/td][td]发布日期[/td][/tr]
[tr][td]
+ p_list .p_name + [/td][td] + p_list .p_price + [/td][td] + p_list .unitInfo + [/td][td] + p_list .p_place + [/td][td] + p_list .publish_date + [/td][/tr]
[/table]

return (table)
子程序名返回值类型公开备 注
发送QQ邮件N文本型 成功返回ok,失败返回no
参数名类 型参考可空数组备 注
发送者邮箱文本型
发送者密码文本型
接收者邮箱文本型
邮件标题文本型
邮件内容文本型
变量名类 型静态数组备 注
cmd_str文本型 
返回文本型 
cmd_str = “发邮件.exe ” + 发送者邮箱 + “ ” + 发送者密码 + “ ”“ ” + 接收者邮箱 + “ ”#引号 + 邮件标题 + #引号“ ”#引号 + 邮件内容 + #引号
返回 = 系统_取DOS执行结果 (cmd_str, )
return (返回)


捕获.PNG

捕获2.PNG

蓝X云:https://www.ilanzou.com/s/wB7yH9T4


评分

参与人数 2精币 +3 收起 理由
光影魔术 + 2 开源精神必须支持~
wa690602724 + 1 感谢分享,很给力!~

查看全部评分


 楼主| 发表于 2024-11-3 20:59:09 | 显示全部楼层   辽宁省沈阳市
本帖最后由 易飞鸟 于 2024-11-3 22:39 编辑

模块:https://www.ilanzou.com/s/ZsTyH99i

另外还有精易模块,请自行下载

还有发送邮件功能是C#实现,代码如下:
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace 发邮件测试
{
    internal class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 5)
            {
                string fromEmail = args[0];
                string fromPassword = args[1];
                string toEmail = args[2];
                string title = args[3];
                string content = args[4];

                bool result = QQSendEmail(fromEmail, fromPassword, toEmail, title, content);
                if (result)
                {
                    Console.Write("ok");
                }
                else
                {
                    Console.Write("no");
                }
            }
            else
            {
                Console.WriteLine("参数数量不正确。用法: [发件邮箱] [密码或授权码] [收件邮箱] [标题] [内容]");
            }
        }




        /// <summary>
        /// QQ发送邮件
        /// </summary>
        /// <param name="fromEmail"> 发件的QQ邮箱
        /// <param name="fromPassword"> 密码或者授权码
        /// <param name="toEmail"> 收件的邮箱
        /// <param name="title"> 邮件标题
        /// <param name="content"> 邮件内容
        /// <returns></returns>
        static bool QQSendEmail(string fromEmail, string fromPassword, string toEmail, string title, string content)
        {

            MailMessage message = new MailMessage();
            message.From = new MailAddress(fromEmail);

            message.To.Add(toEmail);
            message.Subject = title;

            // 创建包含图片的 HTML 内容
            string htmlBody = content;

            AlternateView htmlView = AlternateView.CreateAlternateViewFromString(htmlBody, null, "text/html");

            message.AlternateViews.Add(htmlView);

            SmtpClient client = new SmtpClient("smtp.qq.com", 587);
            client.EnableSsl = true;
            client.Credentials = new NetworkCredential(fromEmail, fromPassword);

            try
            {
                client.Send(message);
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}



回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 2024-12-4 04:38:48 | 显示全部楼层   北京市北京市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:20% (1/5)
发表于 2024-11-12 15:25:58 | 显示全部楼层   安徽省六安市
很想学,很想学
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 1 天

发表于 2024-11-11 15:32:32 | 显示全部楼层   广西壮族自治区柳州市
感谢分享源码
回复 支持 反对

使用道具 举报

签到天数: 24 天

发表于 2024-11-7 09:38:40 | 显示全部楼层   浙江省宁波市
感谢分享,支持开源!!!
回复 支持 反对

使用道具 举报

结帖率:17% (1/6)

签到天数: 17 天

发表于 2024-11-6 11:01:57 | 显示全部楼层   广东省佛山市
感谢分享,支持开源!!
回复 支持 反对

使用道具 举报

签到天数: 24 天

发表于 2024-11-6 09:37:22 | 显示全部楼层   浙江省宁波市
感谢分享,支持开源!!!
回复 支持 反对

使用道具 举报

结帖率:98% (49/50)

签到天数: 20 天

发表于 2024-11-6 06:21:57 | 显示全部楼层   山东省青岛市
感谢发布原创作品,精易因你更精彩!6666666666666
回复 支持 反对

使用道具 举报

结帖率:98% (105/107)

签到天数: 24 天

发表于 2024-11-6 06:17:42 | 显示全部楼层   山东省青岛市
感谢您对论坛的支持!
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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