C# 使用XPath解析网页
1、需要安装库HtmlAgilityPack ,官网http://htmlagilitypack.codeplex.com/
- // From File
- var doc = new HtmlDocument();
- doc.Load(filePath);
- // From String
- var doc = new HtmlDocument();
- doc.LoadHtml(html);
- // From Web
- var url = "http://html-agility-pack.net/";
- var web = new HtmlWeb();
- var doc = web.Load(url);
- //XPath
- var nodes = doc.DocumentNode.SelectNodes("//*[@id=\"body\"]");
XPath语法:http://www.w3school.com.cn/xpath/xpath_syntax.asp
其他解析网页的方法:(引用至:https://blog.csdn.net/shenmegui_zyf/article/details/78784464)
方法一:使用WebClient
- static void Main(string[] args)
- {
- try {
- WebClient MyWebClient = new WebClient();
- MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
- Byte[] pageData = MyWebClient.DownloadData(“http://www.163.com”); //从指定网站下载数据
- string pageHtml = Encoding.Default.GetString(pageData); //如果获取网站页面采用的是GB2312,则使用这句
- //string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句
- Console.WriteLine(pageHtml);//在控制台输入获取的内容
- using (StreamWriter sw = new StreamWriter("c:\\test\\ouput.html"))//将获取的内容写入文本
- {
- sw.Write(pageHtml);
- }
- Console.ReadLine();
- }
- catch(WebException webEx) {
- Console.WriteLine(webEx.Message.ToString());
- }
- }
方法二:使用WebBrowser
- WebBrowser web = new WebBrowser();
- web.Navigate("http://www.xjflcp.com/ssc/");
- web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);
- void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
- {
- WebBrowser web = (WebBrowser)sender;
- HtmlElementCollection ElementCollection = web.Document.GetElementsByTagName("Table");
- foreach (HtmlElement item in ElementCollection)
- {
- File.AppendAllText("Kaijiang_xj.txt", item.InnerText);
- }
- }
方法三:使用HttpWebRequest/HttpWebResponse
- HttpWebRequest httpReq;
- HttpWebResponse httpResp;
- string strBuff = "";
- char[] cbuffer = new char[];
- int byteRead = ;
- string filename = @"c:\log.txt";
- ///定义写入流操作
- public void WriteStream()
- {
- Uri httpURL = new Uri(txtURL.Text);
- ///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换
- httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
- ///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
- httpResp = (HttpWebResponse) httpReq.GetResponse();
- ///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容
- ///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理
- Stream respStream = httpResp.GetResponseStream();
- ///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以
- StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)
- StreamReader respStreamReader = new StreamReader(respStream,Encoding.UTF8);
- byteRead = respStreamReader.Read(cbuffer,,);
- while (byteRead != )
- {
- string strResp = new string(cbuffer,,byteRead);
- strBuff = strBuff + strResp;
- byteRead = respStreamReader.Read(cbuffer,,);
- }
- respStream.Close();
- txtHTML.Text = strBuff;
- }
C# 使用XPath解析网页的更多相关文章
- 小程序开发-使用xpath解析网页html中的数据
最新有个微信小程序的开发需求,需要从网页中提取一些元素信息,获取有效数据 1. 了解到微信小程序里面不能直接操作dom元素,所以我们需要使用一些其他的npm包 2. 经过查到各方面的文档,最新决定用x ...
- golang xpath解析网页
https://github.com/antchfx/htmlquery package main import ( "fmt" "github.com/antchfx/ ...
- @1-4使用Xpath解析豆瓣短评
使用Xpath解析豆瓣短评 Python爬虫(入门+进阶) DC学院 本节课程主要介绍解析神器Xpath是什么.Xpath如何安装及使用,以及使用实际的例子讲解Xpath如何解析豆瓣短评的网页 ...
- 用Xpath选择器解析网页(lxml)
在<爬虫基础以及一个简单的实例>一文中,我们使用了正则表达式来解析爬取的网页.但是正则表达式有些繁琐,使用起来不是那么方便.这次我们试一下用Xpath选择器来解析网页. 首先,什么是XPa ...
- python网络爬虫之解析网页的XPath(爬取Path职位信息)[三]
目录 前言 XPath的使用方法 XPath爬取数据 后言 @(目录) 前言 本章同样是解析网页,不过使用的解析技术为XPath. 相对于之前的BeautifulSoup,我感觉还行,也是一个比较常用 ...
- python开发遇到的坑(1)xpath解析ValueError: Unicode strings with encoding declaration are not supported
Traceback (most recent call last): File "/Users/*******.py", line 37, in <module> Bt ...
- Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段
上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...
- python网络爬虫之解析网页的BeautifulSoup(爬取电影图片)[三]
目录 前言 一.BeautifulSoup的基本语法 二.爬取网页图片 扩展学习 后记 前言 本章同样是解析一个网页的结构信息 在上章内容中(python网络爬虫之解析网页的正则表达式(爬取4k动漫图 ...
- python爬虫三大解析库之XPath解析库通俗易懂详讲
目录 使用XPath解析库 @(这里写自定义目录标题) 使用XPath解析库 1.简介 XPath(全称XML Path Languang),即XML路径语言,是一种在XML文档中查找信息的语言. ...
随机推荐
- windows 内存管理的几种方式及其优缺点
windows 内存管理方式主要分为:页式管理,段式管理,段页式管理. 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页:页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地 ...
- Rocket MQ 源码解析
http://rocketmq.apache.org/rocketmq/the-design-of-transactional-message/ http://www.iocoder.cn/Rocke ...
- JAVA中转义字符
JAVA中转义字符 2010年08月11日 星期三 上午 12:22 JAVA中转义字符: 1.八进制转义序列:\ + 1到3位5数字:范围'\000'~'\377' \0:空字符 2.U ...
- javascript基础拾遗(四)
1.什么是闭包 正常函数,执行完毕后相关的参数,变量就释放掉了. 当一个函数的返回值是另一个函数时,该函数的相关参数和变量都会保存在返回的函数中,这种结构叫做闭包. 2.示例 计算数组和 functi ...
- 每日英语:Teens Are Still Developing Empathy Skills
The teen years are often fraught with door-slamming, eye-rolling and seeming insensitivity, even by ...
- 漫游Kafka之过期数据清理【转】
转自:http://blog.csdn.net/honglei915/article/details/49683065 Kafka将数据持久化到了硬盘上,允许你配置一定的策略对数据清理,清理的策略有两 ...
- Mac使用pyenv安装Python出现The Python zlib extension was not compiled. Missing the zlib错误
Mac使用pyenv安装Python出现The Python zlib extension was not compiled. Missing the zlib错误 参考这里,详细如下: On Mac ...
- YGC和FGC发生时间
1.YGC和FGC是什么 YGC :对新生代堆进行gc.频率比较高,因为大部分对象的存活寿命较短,在新生代里被回收.性能耗费较小. FGC :全堆范围的gc.默认堆空间使用到达80%(可调整)的时候会 ...
- 在Mac上安装与使用mitmproxy
[本文出自天外归云的博客园] 介绍 Mitmproxy是一款支持HTTP(S)的中间人代理工具.不同于Fiddler2,burpsuite等类似功能工具,mitmproxy可在终端下运行,并且支持编写 ...
- myeclipse上传git的问题
unstaged changes 建好仓库,连接到git之后,在上传代码的时候发现有一些代码是unstaged changes状态.这样的文件是没法上传到git上去的.解决方法是给这些文件增加inde ...