孤独的数字生活

在这个数字时代,如果没有朋友,没有社交生活,而唯一关心的就是点击量、浏览量和点赞数,这确实有点悲哀。但如果像一样,是一个专业的“沙发土豆”,除了在家写应用程序和文章之外,没有更好的事情可做,那么正好有一样东西可以推荐给。之所以没有社交生活,是因为待在家里写应用程序和文章(更不用说那自省的“不在乎”的性格缺陷了)。如果也没有自己的生活,这将帮助消磨时间,同时可以欣赏自己的写作技巧(无论是真实的还是想象的)在这个统计数字的镜子中反映出来,作为一种虚荣心来补偿缺少朋友的愿望。可能会发现关于价值的令人震惊的真相。除非有朋友、家人和爱人,否则,就不必在意这一切了。

应用程序

有人刚刚下载了一份《侦探游戏》的副本,现在正在巴迪大厦里愉快地侦查,询问孔雀夫人是否带着扳手在舞厅里。当第一次运行它时,默认的URL设置为,所以如果想看自己的,需要召唤上下文菜单并点击“setURL”。然后会出现一个组框,可以在那里剪切并粘贴Code-Project作者的文章列表(通过点击页面右上角名字下方出现的“My Articles”选项找到)。将相应的URL粘贴到文本框中,然后点击“ok”。第一次加载时,应用程序不会报告任何变化,因为它以前从未见过这个页面。可以在下面的图片中看到,有几个文件在Bin/Debug/目录(工作目录)中,有一些可疑的XML文件。这就是存储文章信息的地方。当尝试了几个不同的作者文章列表后,他们每个人都有自己的XML文件,应用程序将为提供一个可以在下面的列表框中选择的名字列表。当点击那个列表框中的名字时,那个作者的文章被加载,比较并报告变化。

当运行这个应用程序时,会注意到“Views”统计数据总是以10的倍数递增,但不要害怕,Code-Projects的年鉴中没有点击农场在以10的倍数查看文章,只是为了让感觉真的有读者,以人为地增加浏览量计数……不,不,不。这里发生的事情是,浏览量被正确地统计,并且当文章达到最低10个计数时,包含所有文章的网页才会更新。普京总统与此无关。

菜单选项是直接的。

  • 刷新 - 重新加载选定作者的文章并更新输出
  • 设置延迟 - 更改自动更新之间的延迟时间
  • 设置URL - 输入新的URL
  • 设置切换 - 让选择想要报告的字段
  • 清除 - 擦除RichTextBox中的文本(rtx将在运行时保存并重新加载)
  • 隐藏 - 隐藏表格,直到更新导致统计数据发生变化。可以使用CTRL-PrntScrn键来切换表格的Visible属性。
  • 置顶 - 当选中时,将应用程序的表格保持在Windows前台
  • 退出 - 几乎称这个为Egress,但与P.T.Barnum不同,没有看到利润。

使用代码

这个应用程序没有什么复杂的。一直在用称之为HTML-ator的东西来弄清楚需要对HTML文件做些什么,以便从网站上提取想要的数据。使用这个工具,解析了HTML文件,提取了文章统计数据,并将它们存储到一个类Article对象列表中,这些对象跟踪它们的统计数据。这些文章使用它们的标题作为搜索键存储在二叉树中,然后在选定作者更改时记录到XML文件中。

以下是一些代码,它从类URL的public List GetReports()方法中解析HTML。它定义了每个文章信息之前的HTML标签的结尾。然后它找到这个HTML标签的实例,并取出告诉网络浏览器如何绘制每篇文章的统计数据的HTML块。

string strArticle_Field_Start = " " ; int intArticleIndex_End = strHTML_Source.IndexOf(strArticle_Field_End); int intArticleIndex_Start = intArticleIndex_End; int intTemp = 0 ; string strDebug = " " ; int intBest = strHTML_Source.IndexOf(strArticle_Field_Start); while (intTemp >= 0 && intTemp < intArticleIndex_End) { intTemp = strHTML_Source.IndexOf(strArticle_Field_Start, intTemp + 1 ); strDebug = intTemp >= 0 ? strHTML_Source.Substring(intTemp, 130 ) : " " ; if (intTemp >= 0 && intTemp < intArticleIndex_End) intBest = intTemp; } intArticleIndex_Start = intBest; strDebug = intBest >= 0 ? strHTML_Source.Substring(intBest, 130 ) : " " ; while (intArticleIndex_Start >= 0 && intArticleIndex_End > intArticleIndex_Start) { string strHTML_Article = classStringLibrary.HTML_GetNext (strHTML_Source, " " , intArticleIndex_Start); strHTML_Source = strHTML_Source.Replace(strHTML_Article, " " ); List lstFields = classArticle.getFields(strHTML_Article); if (lstFields != null ) { classArticle cArticle = classArticle.Tree_Search (( string )lstFields[( int )enuArticleFields.Title]. value ); if (cArticle == null ) { cArticle = new classArticle(); cArticle.lstFields_Current = cArticle.lstFields_Next = lstFields; classArticle.Tree_Insert( ref cArticle); } lstArticles.Add(cArticle); cArticle.lstFields_Current = cArticle.lstFields_Next; cArticle.lstFields_Next = lstFields;

然后在While-Loop部分稍后,调用C# string strHTML_Article = classStringLibrary.HTML_GetNext(strHTML_Source, "", intArticleIndex_Start);提取每篇文章的HTML,而这篇文章的不同“字段”统计数据是通过这个下一个调用提取的,它删除了所有HTML标签,简化了结果文本,直到它看起来像英语,然后解析出相关的统计数据到一个列表中。

List lstFields = classArticle.getFields(strHTML_Article);

然后,使用标题字段在lstFields中搜索现有的classArticle实例。如果在树中没有找到这篇文章的实例,就会创建一个并插入到树中,新的统计数据列表被设置为“旧”数据以及“新”数据,这次不会记录任何变化。如果树中找到了这篇文章,它的旧数据与新数据进行比较,这些统计数据的任何变化都会被放到屏幕上。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485