根据公司的需求需要到指定网站抓取相关数据,即爬虫。
网上有很多的工具以及第三方的dll,也可以用WebClient等进行抓取网站内容
,或者使用一些正则解析、截取字符串。
所以在网上搜索一下,发现HtmlAgilityPack这个第三方的dll很不错,都是封装
好的方法,直接调用即可。是将gtml转化成xml,然后进行解析。
官网:http://htmlagilitypack.codeplex.com/
下载:http://htmlagilitypack.codeplex.com/downloads/get/437941
http://zhoufoxcn.blog.51cto.com/792419/595344/
相关属性:
Attributes 获取节点的属性集合
ChildNodes 获取子节点集合(包括文本节点)
Closed 该节点是否已关闭(</xxx>)
ClosingAttributes 在关闭标签的属性集合
FirstChild 获取第一个子节点
HasAttributes 判断该节点是否含有属性
HasChildNodes 判断该节点是否含有子节点
HasClosingAttributes 判断该节点的关闭标签是否含有属性(</xxx class="xxx">)
Id 获取该节点的Id属性
InnerHtml 获取该节点的Html代码
InnerText 获取该节点的内容,与InnerHtml不同的地方在于它会过滤掉Html代码,而InnerHtml是连Html代码一起输出
LastChild 获取最后一个子节点
Line 获取该节点的开始标签或开始代码位于整个HTML源代码的第几行(行号)
LinePosition 获取该节点位于第几列
Name Html元素名
NextSibling 获取下一个兄弟节点
NodeType 获取该节点的节点类型
OriginalName 获取原始的未经更改的元素名
OuterHtml 整个节点的代码
OwnerDocument 节点所在的HtmlDocument文档
ParentNode 获取该节点的父节点
PreviousSibling 获取前一个兄弟节点
StreamPosition 该节点位于整个Html文档的字符位置
XPath 根据节点返回该节点的XPath
代码:
private string url = "http://www.baidu.com";
/// <summary>
/// 获取页面标签值
/// </summary>
public void ReadUrl()
{
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load(hosturl);
//1.取网页内容
//var node = doc.DocumentNode;
查找id为dfTitle的值
//HtmlNodeCollection nodes = node.SelectNodes("//*[@id=\"dfTitle\"]");
//if (nodes != null)
//{
// //InnerText取整个网页内容,不包含html标签
// var title = nodes.FirstOrDefault().InnerText;
// //InnerText取整个网页内容,包含html标签
// var content = nodes.FirstOrDefault().InnerHtml;
//}
//取网页特定值
//表示先从html查找table里的a标签,div[2]表示2层div
string xpathstring = "/html/body/div[2]/div/table/tr/td/a";
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes(xpathstring);
if (nodes != null)
{
foreach (var htmlNode in nodes)
{
var phref = htmlNode.Attributes["href"].Value;
}
}
}
标签:标签,HtmlAgilityPack,抓取,dll,获取,Html,var,nodes,节点 From: https://blog.51cto.com/u_15898776/5902198