使用HtmlAgilityPack解析html
2017-12-14 21:37
465 查看
需要先在项目中引用HtmlAgilityPack.dll
解析html时,最常见的场景是在列表页抓取到列表内容,然后做循环根据列表中标题的超链接抓取详情内容。
要抓取的目标网页核心html内容:
<div class="list">
<ul>
<li><a href="/detail.aspx?id=48">新闻标题1</a><span>2017-1-11</span></li>
<li><a href="/detail.aspx?id=47">新闻标题2</a><span>2017-1-10</span></li>
</ul>
</div>
C#代码:
string content = GetUrlHtml("http://xxxx.com/newslist.aspx", "gb2312"); //获取目标网页的html
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(content);
HtmlNode contentNode = doc.DocumentNode.SelectSingleNode("//div[@class='list' ]/ul"); //列表内容所在的大区域
HtmlNodeCollection list = contentNode.SelectNodes("li"); //生成循环
foreach(HtmlAgilityPack.HtmlNode item in list)
{
var a = item.SelectSingleNode("a");
var txt = a.InnerText; //标题
var href = a.Attributes["href"].Value; //详情地址
var dt = item.SelectSingleNode("span").InnerText; //时间
var detail = GetUrlHtml(href, "gb2312"); //获得详情页html,再进行解析获得最终内容
//插入数据库
}
private string GetUrlHtml(string url, string code = "utf-8")
{
try
{
WebRequest rGet = WebRequest.Create(url);
WebResponse rSet = rGet.GetResponse();
Stream s = rSet.GetResponseStream();
StreamReader reader = new StreamReader(s, Encoding.GetEncoding(code));
return reader.ReadToEnd();
}
catch (WebException)
{
//连接失败
return "";
}
}
解析html时,最常见的场景是在列表页抓取到列表内容,然后做循环根据列表中标题的超链接抓取详情内容。
要抓取的目标网页核心html内容:
<div class="list">
<ul>
<li><a href="/detail.aspx?id=48">新闻标题1</a><span>2017-1-11</span></li>
<li><a href="/detail.aspx?id=47">新闻标题2</a><span>2017-1-10</span></li>
</ul>
</div>
C#代码:
string content = GetUrlHtml("http://xxxx.com/newslist.aspx", "gb2312"); //获取目标网页的html
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(content);
HtmlNode contentNode = doc.DocumentNode.SelectSingleNode("//div[@class='list' ]/ul"); //列表内容所在的大区域
HtmlNodeCollection list = contentNode.SelectNodes("li"); //生成循环
foreach(HtmlAgilityPack.HtmlNode item in list)
{
var a = item.SelectSingleNode("a");
var txt = a.InnerText; //标题
var href = a.Attributes["href"].Value; //详情地址
var dt = item.SelectSingleNode("span").InnerText; //时间
var detail = GetUrlHtml(href, "gb2312"); //获得详情页html,再进行解析获得最终内容
//插入数据库
}
private string GetUrlHtml(string url, string code = "utf-8")
{
try
{
WebRequest rGet = WebRequest.Create(url);
WebResponse rSet = rGet.GetResponse();
Stream s = rSet.GetResponseStream();
StreamReader reader = new StreamReader(s, Encoding.GetEncoding(code));
return reader.ReadToEnd();
}
catch (WebException)
{
//连接失败
return "";
}
}
相关文章推荐
- 使用C#和HtmlAgilityPack解析HTML
- HTML解析组件HtmlAgilityPack使用
- C# HTML解析工具HtmlAgilityPack使用简介
- 使用HtmlAgilityPack解析Html(非常好用)
- 使用HtmlAgilityPack解析html
- HTML解析组件HtmlAgilityPack使用
- .Net解析html文档类库HtmlAgilityPack完整使用说明
- c#使用htmlagilitypack解析html格式字符串
- .Net解析html文档使用类库HtmlAgilityPack
- C#中使用HtmlAgilityPack对html进行解析
- C# HTML解析工具HtmlAgilityPack使用实例(一)
- .Net解析html文档类库HtmlAgilityPack完整使用说明
- 使用HtmlAgilityPack.dll解析html
- C#:使用HtmlAgilityPack解析Html
- WindowsPhone使用HtmlAgilityPack解析HTML
- C# HTML解析工具HtmlAgilityPack使用实例(二)--Web页面
- WindowsPhone使用HtmlAgilityPack解析HTML
- HTML解析利器HtmlAgilityPack
- 爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)
- Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用