Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
构建显示最近更新的网站的C#应用程序_C#_Html - Fatal编程技术网

构建显示最近更新的网站的C#应用程序

构建显示最近更新的网站的C#应用程序,c#,html,C#,Html,我想构建一个C#应用程序,它将: 浏览我的收藏夹列表(例如,在IE中) 检查自上次访问以来网站是否已更新 显示最近更新的URL的列表 第2点似乎有问题,因为C#的HttpWebResponse.LastModified属性不适用于某些博客和其他网站(它报告当前日期和时间) 有什么想法吗? 谢谢上次修改的标题确实不是由某些web服务器设置的,您对此无能为力。对于这些情况,您需要获取HTML并对数据进行散列。如果哈希在下一次检索时匹配,则它(很可能)没有更改 如果HTML中有一个不断变化的部分,你可

我想构建一个C#应用程序,它将:

  • 浏览我的收藏夹列表(例如,在IE中)
  • 检查自上次访问以来网站是否已更新
  • 显示最近更新的URL的列表
  • 第2点似乎有问题,因为C#的HttpWebResponse.LastModified属性不适用于某些博客和其他网站(它报告当前日期和时间)

    有什么想法吗?
    谢谢

    上次修改的标题确实不是由某些web服务器设置的,您对此无能为力。对于这些情况,您需要获取HTML并对数据进行散列。如果哈希在下一次检索时匹配,则它(很可能)没有更改

    如果HTML中有一个不断变化的部分,你可以解析HTML树并删除其中典型的变化部分,比如谷歌广告。但这比仅仅检查标题要费劲得多,这取决于你的实际用例,看它是否值得你费劲。在这最后一项工作中使用的一个好工具是

    另一种可能产生更好结果的方法是测量页面两个版本之间的差异,并将其标记为高于某个阈值的更新。同样,这在许多情况下都会失败(现在会出现误报)。把这个扔到这里,以防万一它会激励你做一些有用的事情。

    不确定它是否会像你期望的那样工作。从RFC:

    此标头字段的确切含义取决于源服务器的实现和原始资源的性质。对于文件,它可能只是上次修改的文件系统。对于具有动态包含零件的实体,它可能是其零部件的最近一次修改时间集。对于数据库网关,它可能是记录的最后更新时间戳。对于虚拟对象,它可能是最后一次更改内部状态

    我对规范的解释将导致我将动态生成的内容(即:PHP页面)的标题设置为当前日期/时间。托管页面的服务器实际上不知道正在构建的内容实际上是在什么时候最后更新的(一些数据来自一个数据库服务器,另一个数据库服务器,两个记录都没有指示更新时间的字段,等等)。它可以将文件系统时间用于PHP文件本身,但在每次重新加载时呈现的内容都会发生更改的情况下,这可能会持续几个月。如果没有开发人员关于使用哪个值的指导,我认为服务器/解释器无法解决这个问题


    所以不幸的是,我认为你最好的选择是像其他人所建议的那样分析页面内容本身,但由于动态内容方面的原因,这并不容易准确识别

    您可以为每个页面创建一个校验和,并查看校验和是否更改。如果页面包含Google文本广告,则该操作将失败,会吗?这些通常是java脚本调用,您应该在从服务器返回的内容中看到所有脚本标记,但是如果数据库驱动的网页显示了您拥有的日期,则会发生更改。这种方法的问题是带有动态元素的页面,例如,文本广告在加载时会发生更改。其中一些(例如谷歌广告)可以被过滤掉,但这样做的努力最终可能会变得乏味和不完整。