一个用来获取头条广告投放后台数据的组件

  • JWatchDog功能
  • JWatchDog自带介绍
  • JWatchDog
    • 使用方法
      • 获取一个Selenium浏览器驱动实例
      • 打开巨量引擎登录页面
      • 使用内置的日志记录器
      • 获取数据
      • 操控数据列表页面中的列
      • 支持操作ini文件便于存储配置信息
  • 下载地址

JWatchDog功能

这是一个使用.net 6 编写的用来获取头条广告投放后台(巨量引擎)数据的组件,使用Selenium无头浏览器插件。
由于巨量引擎的marketing api使用权限限制较多,只能同主体对同主体的账号授权获取数据(或者申请代理资格),对于代投或者有多个主体的情况下,走marketing api会比较麻烦,所以干脆用无头浏览器直接访问管家号后台获取数据更省事。

JWatchDog自带介绍

JWatchDog

一个方便获取广告后台数据的工具,使用Selenium浏览器插件,目前支持今日头条巨量引擎管家账号推广页面数据获取。

使用方法


获取一个Selenium浏览器驱动实例

注意:系统中需要安装Chrome浏览器。

如果你需要打开一个浏览器并手动操作,可以使用下面的代码:

JWatchDog.Browser browser = new JWatchDog.Browser();
browser.CacheDir = "D:\\Chrome\\1";
browser.BrowerPort = 0;
ChromeDriver chromeDriver= browser.SetupBrower(false,false,true);

CacheDir 参数用以指定Chrome浏览器的缓存目录,方便在登录后记录用户的登录状态避免采集数据时再次登录,默认是当前程序运行目录下的Cache子目录。

BrowerPort 参数用以指定程序与浏览器通讯用的端口,默认用0由系统控制。

注意:同时打开多个浏览器窗口可能造成Selenium无法通讯。


打开巨量引擎登录页面

JWatchDog.Browser browser = new JWatchDog.Browser();
ChromeDriver driver = browser.SetupBrower(false);
driver.Navigate().GoToUrl("https://business.oceanengine.com/site/login");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); //设置浏览器等待加载的时间
IWebElement email_input = driver.FindElement(By.Name("email"));
email_input.SendKeys("账号");
IWebElement password_input = driver.FindElement(By.Name("password"));
password_input.SendKeys("密码");
IWebElement checkBox = driver.FindElement(By.ClassName("account-center-agreement-check"));
driver.ExecuteScript("arguments[0].click();", checkBox);
IWebElement submitButton = driver.FindElement(By.ClassName("account-center-action-button"));
driver.ExecuteScript("arguments[0].click();", submitButton);
//此时会弹出人机验证界面,需要手动操作验证
//循环检测是否已经完成人机验证(3秒一次,共尝试10次)
for (int i = 0; i < 10; i++)
{string pageUrl = driver.Url;if (pageUrl.StartsWith("https://business.oceanengine.com/site/dashboard")){break;}Thread.Sleep(3 * 1000);
}
driver.Quit();

使用内置的日志记录器

JWatchDog.Logger logger = new JWatchDog.Logger();
logger.Write("This is a test log", Logger.LogLevel.Info);

Logger对象的LogDir参数为日志文件存储路径,不设置时默认为当前程序目录下的Logs子目录。

LogLevel共有4个等级,分别为Info,Warn,Error,Fatal。

注意:Logger使用了单例模式。

日志记录器还提供了OnLogWrite事件,方便WinForm应用在写入日志是获取日志信息用于显示。

static void Main()
{Logger logger = new Logger();logger.OnLogWrite += log;logger.Write("info test");logger.Write("warn test", Logger.LogLevel.Warn);logger.Write("error test", Logger.LogLevel.Error);
}static void log(string str,JWatchDog.Logger.LogLevel level)
{if(level > Logger.LogLevel.Warn){Console.WriteLine(str);}
}

获取数据

JWatchDog.TouTiao.DataSniffer dataSniffer = new JWatchDog.TouTiao.DataSniffer();
dataSniffer.CacheDir = "C:\\Chrome\\1";
string[] addCols = new string[6] { "激活数", "激活成本", "次留数", "次留率", "首次付费数", "付费成本" };
TTStatsList tTStatsList = dataSniffer.GetData(0, addCols);
Console.Write(tTStatsList.ToString());

CacheDir 参数用以指定Chrome浏览器的缓存目录,方便在登录后记录用户的登录状态避免采集数据时再次登录,默认是当前程序运行目录下的Cache子目录。

BrowerPort 参数用以指定程序与浏览器通讯用的端口,默认用0由系统控制。

TTStatsList 类是获取到的数据内容,其结构可参考 https://business.oceanengine.com/platform/api/v1/bp/statistics/promote/advertiser/stats_list/ 接口的返回内容。

TTStatsList的ToString()方法将会返回对应的Json字符串。

TTStatsList的Add()方法可以将另一个TTStatsList对象的stats_list合并到当前的对象中。

获取数据时会自动翻页。


操控数据列表页面中的列

JWatchDog.TouTiao.OptCols.NeedCol(ref ChromeDriver driver, string colName)
JWatchDog.TouTiao.OptCols.TryAddCol(ref ChromeDriver driver, string colName)

通过NeedCol方法可以自动检测列是否存在,如果不存在则会调用TryAddCol尝试增加指定的列。


支持操作ini文件便于存储配置信息

//写入
public static bool Write(string filePath, string section, string key, string? val);
//删除键
public static bool DeleteKey(string filePath, string section, string key);
//删除区段
public static bool DeleteSection(string filePath, string section);
//读取值
public static string ReadValue(string filePath, string section, string key);
//读取区段
public static List<string> ReadSections(string filePath);
//读取所有键
public static List<string> ReadKeys(string filePath, string section);

调用实例

JWatchDog.IniFile.Write("D:\\Config\\c.ini", "Account", "Name", "张三");

下载地址

NuGet地址:https://www.nuget.org/packages/JWatchDog/
GitHub地址:https://github.com/PisChiao/JWatchDog

一个用来获取头条广告投放后台数据的组件相关推荐

  1. 广告投放系统后台html,今日头条广告投放后台如何创建广告?

    原标题:今日头条广告投放后台如何创建广告? 一.创建广告组 1.今日头条广告组预算如何设定 您可以通过广告组预算设置该广告组下所有广告计划预算的消费限额,该推广计划的推广信息在消费达到预算后将下线,不 ...

  2. 今日头条极速版怎样签到_今日头条投放广告的费用多少钱?今日头条广告投放完整流程是怎样?...

    目前,今日头条广告投放主要有3种扣费模式,分别是按CPC点击扣费.按CPM展示收费.按OCPC/OCPM/CPA效果收费.下面具体介绍下这3种广告收费模式. 1.CPM按展示扣费 当广告展示您才需要付 ...

  3. 趣头条广告如何定向推广?趣头条广告投放有效果吗?

    趣头条广告现在投放免费领取的广告效果都还是不错的,在趣头条上做推广只需要广告主提供产品图就可以了,趣头条可以在广告账户内的自建站搭建落地页,直接在后台生成广告链接去做投放,这无疑对广告主来说是一件非常 ...

  4. 趣头条推广二类电商的广告效果怎么样?趣头条广告投放的展现形式

    在平台发展初期,趣头条利用浏览资讯赚钱的模式,积累了大量的用户,广告主们当然不能错过这一波流量红利,那么二类电商的广告适合投放这个平台吗?这个平台推广电商的广告效果到底怎么样呢? 首先我们就要先来了解 ...

  5. 今日头条广告投放技巧干货:落地页分析工具

    在实际投放过程中,经常会碰见进入落地页的用户数还不错,但实际提交表单数却不高,有时候想优化落地页,却不知从哪里开始入手的情况,如果你曾经遇到过类似这样的问题,那你一定不能错过今天这篇今日头条广告投放干 ...

  6. 今日头条广告投放入门知识

    工欲善其事,必先利其器.熟练掌握今日头条广告投放规则,对每个广告主来说都非常重要,毕竟,再优秀的广告创意也需要符合投放规则才能锦上添花.然而,很多广告主想当然地认为决定广告效果的最终还是自己的预算,和 ...

  7. 今日头条广告投放技巧解读

    现在今日头条广告投放的具体业务,已整合到巨量引擎广告投放平台上了.广告主们只需在巨量引擎上注册账号进行投放即可.今天笔者就来给大家介绍下教育培训行业如何做好今日头条广告投放,以及在今日头条广告投放的一 ...

  8. 今日头条广告投放不能忽略的落地页分析工具

    如果你在今日头条广告投放中,经常会遇到广告有展示.有点击,但转化量却很少?或者进入落地页的用户数还不错,实际提交表单数低?或者想优化落地页,却不知从哪里开始入手?那么你一定不能错过这款重磅产品:落地页 ...

  9. 趣头条广告投放的效果怎么样?趣头条广告开户找哪里?

    趣头条是采用了类似于拼多多的产品策略,针对于下沉用户市场,通过三四线城市的用户传播和社交裂变,吸引用户使用并且保持用户的活跃度,趣头条用现金激励的方法引导用户,让用户能够在既定的行为得到真金白银,更好 ...

最新文章

  1. Nginx 一个牛 X 的功能,流量拷贝!
  2. MySQL-基础操作之增删改查
  3. 《树莓派实战秘籍》——2.7 技巧27尝试Occidentalis:为(高级)教育目的的树莓派发行版...
  4. because the principal dbo does not exist 问题解决方法
  5. 利用Date类计算生活时间
  6. oracle导入导出版本规则,oracle expdp impdp 导出导入(支持高版本到低版本)
  7. 卷积神经网络问题总结
  8. python读取特定单词_Python:如何从txt文件中的特定单词开始读取到文件结尾
  9. python dynamic array
  10. 怎样把ue4官方文档下载下来_ue4官方文档下载及翻译
  11. UNIX网络编程的5种IO模型
  12. 用Python绘制杨紫作品集动态二维码
  13. 舞蹈课(dancingLessons)
  14. ibm虚拟化 用的服务器品牌,浅析IBM i虚拟化技术
  15. iOS软件工程师面试 自我介绍
  16. 各学科、各专业、全系列软件图文、视频安装详细教程总贴——CM(changeMax)独家制作,汇总
  17. 腾讯云服务器高性能云盘和SSD云硬盘区别及选择
  18. vim常用插件安装及使用
  19. 洛谷1456 Monkey King
  20. Ceph分布式存储知识总结

热门文章

  1. DPlayer视频播放器使用方法
  2. Linux 应急响应辅助笔记
  3. 如何建立一套自己的投资系统?(二)
  4. 永顺泰深交所上市:年营收30亿募资8.6亿 市值49亿
  5. 前端案例二:新浪首页标题栏制作
  6. 分类——支持向量机分类
  7. 牛客/赛码 编程题 javascript 的本地调试
  8. 【PPT】阿里巴巴数据中台实践分享
  9. Okta CEO 改口证实第三方账户受陷且影响客户,LAPSUS$扬言发动供应链攻击
  10. unity3d一个简单的对打游戏