zoukankan      html  css  js  c++  java
  • 以一种"廉价"的方式获取页面的标题(By downmoon)

    有园子里的朋友问到:
    “我需要得到一个web page的title,因为这个title一般都比较靠前,只要取得html 的前面少量内容就可以了。因为要取得很多个页面的title,如果下载整个html code, 肯定比较浪费时间。.net好像没有现成的类可以干这件事情(取得部分html) ,我应该如何去实现?”
    一种比较"廉价"(即较小成本条件下)的解决思路:
    第一步:取出含有页面title部分的最小集合。这是“廉价”的关键!
    第二步:用正则表达式取出<title>和</title>之间的部分即可。
    先看下效果:
    邀月工作室

    下面我们来分析:
    页面title 一般都在靠近开始处,所以我们从开始读取Stream流,(如果靠近结尾,则如何?)读取到什么地方为止呢?有个比较明显的标志是
    </title>
    遇到它结束就可以了。
    以什么方式读取,我这里选取的是:逐行读取,取到标志符即终止。
    方法如下:

    Code

    取出后就是再用正则取出<title>和</title>之间的部分。
    这部分浪费了些时间,因为邀月的正则功底不行啊!·
    先后试过如下正则表达式:

    1 //string strRegEx ="<[^>]*>";
    2 //string strRegEx = "<title>.*([^</title>])";
    3 //string strRegEx = "<title>(.*?)</title>";
    4 //string strRegEx = "<title>.*?</title>";

    均不能达到想要的“经济廉价”的效果,最终,找到这个:

    Code


    演示效果如上图:

    后续问题:
    1、将继续实现代理方式躲过IP;
    2、将尝试另外一种通过Request.Filter方式直接替换来实现。
    欢迎交流。

    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    助人等于自助!  3w@live.cn
  • 相关阅读:
    构建乘积数组
    数组中重复的数字
    把字符串转换成整数
    不用加减乘除做加法
    求1+2+3+...+n
    孩子们的游戏(圆圈中最后剩下的数)
    翻转单词顺序列
    扑克牌顺子
    左旋转字符串
    ES6必知必会 —— Module
  • 原文地址:https://www.cnblogs.com/downmoon/p/1568136.html
Copyright © 2011-2022 走看看