zoukankan      html  css  js  c++  java
  • asp.net抓取网页html源代码失败 只因UserAgent作怪

    asp.net抓取网页html源代码,我想对于任何一个asp.net程序员来说都不再陌生,这是一个非常简单容易就能实现的功能。下面便是一个通用的asp.net获得网页源代码的程序。

    首先引用

    using System.Net;
    using System.IO;
    using System.Text;

    程序代码如下:

    string szUrl = "http://www.webkaka.com/";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(szUrl);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream hwStream = response.GetResponseStream();
    Encoding eData = Encoding.GetEncoding("utf-8");
    StreamReader sData = new StreamReader(hwStream, eData);
    string szHTML = sData.ReadToEnd();

    szHTML就是抓到的网页html源代码了。得到源代码后,就可以进一步各需所用了。

    为什么抓取某些页面失败?

    不过,有时候我们会发现,这个程序在抓取某些页面时,是获不到所需的内容的,有时候甚至返回404的错误提示页,这是什么原因呢?

    其实,很多人都忽略了一个问题,那就是服务器默认的浏览器问题。有的服务器默认的浏览器是手机浏览器,那么,当我抓取这个服务器下的网页是,就相当于用手机浏览器来打开网页,而如果要抓取的目标网页没有相应的手机网页的话,就会返回意想不到的结果,有的返回404错误提示页,有的返回403错误提示页,有的甚至跳转到其他网页去了。

    如何解决这个问题?

    要解决这个问题,其实很简单,我们只需要在程序里指定使用的浏览器的即可,即是设置UserAgent的参数值。

    改进后的代码如下:

    string szUrl = "http://www.webkaka.com/";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(szUrl);
    request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)";
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream hwStream = response.GetResponseStream();
    Encoding eData = Encoding.GetEncoding("utf-8");
    StreamReader sData = new StreamReader(hwStream, eData);
    string szHTML = sData.ReadToEnd();

    上述程序粗体字就是指定使用的浏览器来读取网页内容,这样,就不会出现抓取不到目标网页的情况了。

  • 相关阅读:
    BasKet Note Pads-运用软件作笔记
    K3b-全功用的光盘烧录器材
    GShutDown:自动化关机小工具
    Xournal-条记抄写软件
    Metisse:相称酷的窗口操持器
    Realtek ALC268集成声卡驱动成绩在ubuntu下的处置责罚方案
    Wixi-桌面端 Wiki 运用
    Avant Window Navigator:Dock 类的窗口导航要领
    DDM:剪贴板办理及截取屏幕
    快速搞定Windows Xp Pro繁体中文版的简体支持
  • 原文地址:https://www.cnblogs.com/sunny-539/p/3599853.html
Copyright © 2011-2022 走看看