精易论坛

标题: [我的爬虫日志04]爬取蔬菜价格,并自动发邮件 [打印本页]

作者: 易飞鸟    时间: 2024-11-3 20:45
标题: [我的爬虫日志04]爬取蔬菜价格,并自动发邮件
本代码可以实现自动爬取蔬菜价格,并发邮件通知自己,可以电脑上设置一个任务计划,让他每天自动获取
  
窗口程序集名保 留  保 留备 注
程序集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 (返回)






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



作者: sivsiv    时间: 2024-11-3 20:51
膜拜大佬

作者: 易飞鸟    时间: 2024-11-3 20:59
本帖最后由 易飞鸟 于 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;
            }
        }
    }
}




作者: 真IKUN    时间: 2024-11-3 21:43
好厉害!加油!

作者: 笑人心    时间: 2024-11-3 21:50
感谢分享!!
作者: 没事瞎琢磨    时间: 2024-11-3 22:01
发邮件exe 我比较好奇代码
作者: 艾玛克138    时间: 2024-11-3 22:04
老大出品,必属精品
作者: 易飞鸟    时间: 2024-11-3 22:37
没事瞎琢磨 发表于 2024-11-3 22:01
发邮件exe 我比较好奇代码

C#实现  易语言互联网支持库也有命令 但我测试用不了
作者: 查过    时间: 2024-11-4 06:11
下个学习一下
作者: 豆豆灰常开心    时间: 2024-11-4 06:16
感谢发布原创作品,精易因你更精彩!6666666666666
作者: qwe111qwe    时间: 2024-11-4 07:53
感谢分享!!!!
作者: lhn0925    时间: 2024-11-4 08:27
学习一下
作者: 阿凡地方23    时间: 2024-11-4 08:38
感谢分享~!

作者: kka    时间: 2024-11-4 09:11

感谢分享!!
作者: 一指温柔    时间: 2024-11-4 09:35
        支持开源~!感谢分享
作者: wh1234567    时间: 2024-11-4 09:59
支持开源!感谢分享
作者: wh1234567    时间: 2024-11-4 10:02
直接发上来论坛里,那网站还得注册很麻烦的
作者: wh1234567    时间: 2024-11-4 10:11
品种太少了
作者: mood100    时间: 2024-11-4 11:12
感谢分享了收藏学习
作者: youxigw    时间: 2024-11-4 11:16
感谢分享了收藏学习
作者: pshq123    时间: 2024-11-4 12:49

作者: a6288a    时间: 2024-11-4 15:02
这个牛逼~
作者: 何浩文    时间: 2024-11-4 16:51
感谢分享,很给力!~
作者: 查过    时间: 2024-11-5 06:08
感谢发布原创作品,精易因你更精彩!6666666666666
作者: 豆豆灰常开心    时间: 2024-11-5 06:12
感谢您对论坛的支持!
作者: year1970    时间: 2024-11-5 07:53
感谢分享
作者: 特别nb    时间: 2024-11-5 17:20
感谢发布原创作品,精易因你更精彩!6666666666666
作者: 查过    时间: 2024-11-6 06:17
感谢您对论坛的支持!
作者: 豆豆灰常开心    时间: 2024-11-6 06:21
感谢发布原创作品,精易因你更精彩!6666666666666
作者: please    时间: 2024-11-6 09:37
感谢分享,支持开源!!!
作者: fusiyon    时间: 2024-11-6 11:01
感谢分享,支持开源!!
作者: please    时间: 2024-11-7 09:38
感谢分享,支持开源!!!
作者: 光影魔术    时间: 2024-11-11 15:32
感谢分享源码
作者: 1067546628    时间: 2024-11-12 15:25
很想学,很想学
作者: 熊不熊    时间: 2024-12-4 04:38
感谢分享,很给力!~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4