博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 使用XPath解析网页
阅读量:7220 次
发布时间:2019-06-29

本文共 2938 字,大约阅读时间需要 9 分钟。

1、需要安装库 ,官网

// From Filevar doc = new HtmlDocument();doc.Load(filePath);// From Stringvar doc = new HtmlDocument();doc.LoadHtml(html);// From Webvar url = "http://html-agility-pack.net/";var web = new HtmlWeb();var doc = web.Load(url);//XPathvar nodes = doc.DocumentNode.SelectNodes("//*[@id=\"body\"]");

 XPath语法:

 

其他解析网页的方法:(引用至:)

方法一:使用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[256]; int byteRead = 0; 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,0,256);   while (byteRead != 0)   {     string strResp = new string(cbuffer,0,byteRead);        strBuff = strBuff + strResp;        byteRead = respStreamReader.Read(cbuffer,0,256);   }   respStream.Close();   txtHTML.Text = strBuff; }

 

转载地址:http://gkhym.baihongyu.com/

你可能感兴趣的文章
计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接(ZT)
查看>>
Android网络游戏之神农诀项目开发--视频
查看>>
5. Longest Palindromic Substring
查看>>
【转载】MiniUtilityFramework(四):CDominatorBase
查看>>
vue2.x 过滤器,自定义按键修饰符 ,自定义指令
查看>>
【Unity】第7章 输入控制
查看>>
二叉树的性质
查看>>
git cherry-pick的使用
查看>>
python redis插件安装
查看>>
docker 开启远程
查看>>
CRM协同8.2升级到9.2SP2步骤
查看>>
hdu1085
查看>>
C#之获取年、月、日、时、分、秒...
查看>>
函数的不定长参数
查看>>
转载:一碗牛肉面的思考
查看>>
Story Of Web Background
查看>>
emotion使用笔记
查看>>
Discuz3.4-SSRF-从触发点到构造payload
查看>>
01 jmeter性能测试系列_Jmeter的体系结构
查看>>
linux -- Ubuntu 安装搜狗输入法
查看>>