利用Http状态码检查网页内容是否更新 提取网页有用的很
来源:互联网 发布:经期记录软件 编辑:程序博客网 时间:2024/05/18 22:44
在做网页抓取爬虫类的工具时,经常要对页面进行监控和解析,其中监控就是检查页面内容是否发生了更新。判断网页是否发生变化最直接的方法是设置页面的某一处为监控区域,每次都抓取该部分区域的内容,然后与本地保存的或最近一次抓取内容比较,如果有差异就表明网页发生了变化,才可以进行解析。这种方法比较稳妥,几乎可达到万无一失的效果。但是,这种方式在每次扫描时都要下载页面内容,并且要去截取监控区域的内容,最后还要进行字符串比较,整个过程比较耗时。其实在众多网页中,有一部分网站的网页内容是静态页面,如图片,html,js等,这些静态页面往往可能是服务器早已准备好的,用户访问时仅仅是下载而已。那么针对这种静态页面,就可以仅仅通过状态码来判断,内容是否发生了变化。
这个状态码就是304(Not Modified),对于这个代码的解释是"如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码"。很明显通过这个解释,我们就明白了其实现的机理。我们要做的事情,仅仅是在发送请求时将上次访问的时间添加到header中,然后根据服务器返回的状态码进行判断。通常,在网页发生变化时,服务器会返回状态码200,而未发生变化则返回304。
dotnet在网络传输这块已经提供了完善的API,接下来请看具体的实现方式。在这个例子中,通过访问国家统计局的banner页面(http://www.stats.gov.cn/top.html)来演示,分别检查3天前和3个月前该页面是否发生了变化。
需要注意的是,在网页内容没有发生变化时,会抛出异常,状态码只能在异常信息中获取。另外在返回200状态码时,有时候并不表示页面发生了变化,因为有些服务器不识别请求中的lastModifiedSince内容。经过实际项目的实践,发现大部分的静态页面内容,都能够通过该方法判断。
摘自网络:http://www.cnblogs.com/shenba/archive/2009/12/20/1628173.html#1741279
- 利用Http状态码检查网页内容是否更新 提取网页有用的很
- 利用HtmlParser来提取网页内容
- android利用Http协议获取网页文本内容的方法
- 网页HTTP状态码的详细解释
- 从网页提取内容
- nodejs提取网页内容
- xpath提取网页内容
- 检查网页是否存在
- HTTP状态码451:基于法律上的原因,我不能向你展示网页内容
- curl检查访问网页返回的状态码
- 启发式提取一个网页的主体内容
- 将网页表格的内容提取出来
- 根据网页的HTML内容提取网页的Encoding
- python_获取网页的内容和状态
- 访问网页的各种http状态码的解释说明
- 利用jsoup实现网页内容的抓取
- uip 的http中,自定义网页内容
- 网页http状态码解释说明
- SpringSide 3.3.3 大众搬屋版
- 怎么学好SQL serve
- [转载]Nginx完整配置说明
- android编译全过程
- GCC-3.4.6源代码学习笔记(79)
- 利用Http状态码检查网页内容是否更新 提取网页有用的很
- Studying note of GCC-3.4.6 source (79)
- 龙芯系统编译rpm-4.4.2.3源码包遇到问题
- sql server中用job执行DTS
- 由pdm生成建表脚本时,字段超过15字符就发生错误(oracle)
- HTTP Status 500
- JAVA线程对象的状态
- 分页
- powerdesinger中建立一个表后,出现Existence of index的警告