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();
上述程序粗体字就是指定使用的浏览器来读取网页内容,这样,就不会出现抓取不到目标网页的情况了。
转载于:https://www.cnblogs.com/sunny-539/p/3599853.html
asp.net抓取网页html源代码失败 只因UserAgent作怪相关推荐
- c 语言获取网页源码,CHttpFile抓取网页源代码 | C/C++程序员之家
发现MFC真是一个好东西,减少许多C++开发者造轮子的麻烦(说MFC-微软基础类库过时的勿喷).如下,包含头文件afxinet.h(该类封装了一些MFC SOCKET的操作).CHttpFile抓取网 ...
- asp.net 初步入门使用正则抓取网页信息
今天闲着没事看了看使用正则的使用,之前只是用来做验证,第一次用来抓取网页, 抓去了博客园首页几个分页的推荐文章列表.... 代码很简单就不做解释了,肯定做得不严谨,主要是熟悉下几个正则类和用于抓取网页 ...
- ASP.NET抓取网页内容
原文:ASP.NET抓取网页内容 一.ASP.NET 使用HttpWebRequest抓取网页内容 这种方式抓取某些页面会失败 不过,有时候我们会发现,这个程序在抓取某些页面时,是获不到所需的内容的, ...
- Linux 抓取网页实例(shell+awk)
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 上一篇博 ...
- Zotero 抓取知网文献失败解决办法梳理(针对问题:更新Translator无效,更新茉莉花插件无效,卸载Zotero无效,使用学校VPN访问知网)
Zotero 抓取知网文献失败解决办法梳理(针对问题:更新Translator无效,更新茉莉花插件无效,卸载Zotero无效,使用学校VPN访问知网) 问题背景 解决方案一 解决方案二 解决方案三 说 ...
- 利用HttpURLConnection抓取网页取名
闲来无事,利用Java 的HttpURLConnection,使用多线程来抓取网页,计算名字的分数. 仅供娱乐. 程序如下 import java.io.BufferedReader; import ...
- .NET2.0抓取网页全部链接【月儿原创】
.NET2.0抓取网页全部链接 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/ 时间:2007.4.18 该方法经过对各大门户网站测试结果是抓取 ...
- Java抓取网页数据(原网页+Javascript返回数据)
转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/7909006 有时候因为种种原因,我们须要採集某个站点的数据,但因为不同 ...
- ASP.NET 抓取网页内容
(转)ASP.NET 抓取网页内容 ASP.NET 抓取网页内容-文字 ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题. 需要三个类:WebRequest. ...
- 【.NET】使用HtmlAgilityPack抓取网页数据
原文:[.NET]使用HtmlAgilityPack抓取网页数据 刚刚学习了XPath路径表达式,主要是对XML文档中的节点进行搜索,通过XPath表达式可以对XML文档中的节点位置进行快速定位和访问 ...
最新文章
- 2.本征矩阵 基本矩阵以及对极几何之间的约束关系
- 如何黑掉一台根本不联网的电脑
- js 获取 select的option的 id值
- A - Promotions
- Mysql windows 安装提示MSVCR120.dll文件丢失
- Linux服务器性能评估(转)
- 人工智能python基础知识_AI 人工智能基础知识-习题
- Python_多进程
- 内存一致性模型(Memory Consistency Models)
- 死磕jdk源码之如何注释
- 计算机二级office学习之Excel操作题考点整理
- 华三H3C交换机路由器如何配置dhcp中继(dhcp relay)
- ArcGIS Pro 学习路径
- Emscripten 单词_学会词根词缀,开启高效、快速地记忆英语单词模式
- 湿气重怎么办?湿气有哪些危害?祛湿建议首选云植祛湿颗粒
- 2021年美国大学生数学建模竞赛C题参考翻译
- AutoformR8 软件安装说明视频教程
- 小米盒子访问计算机硬盘,无需电脑教你手机数据传到小米盒子外置硬盘的教程...
- 计算机的基础知识有哪些呢?
- oracle永久解scott,Oracle 11g中解决被锁定的scott用户的方法
热门文章
- perl 切换 dnspod 域名记录
- js得到自定义属性和操作table表格
- keepalived vrrp_script脚本不执行解决办法
- 书评-YDKJSthis与对象原型
- FragmentStatePagerAdapter写法
- Android studio 如何快速收起代码?
- ux.plup.File plupload 集成 ux.plup.FileLis 批量上传预览
- [20151014]关于result cache.txt
- Linux 下删除大量文件
- C#中的线程(四)高级话题