我有一个 HTML 文档,并且想要从中获取必要的信息,因此使用了 HTML 敏捷性概念。使用以下代码获取所有必要的数据。
var web = new HtmlWeb();
var doc = web.Load("http://www.talentsearchpeople.com/en/jobs/?page=joblisting&pubID=&formID=&start=0&count=8&module=&functionLevel1=&provinceNode=&countryNode=&keyword=");
var nodes = doc.DocumentNode.SelectNodes("//a[@class='grijs'][@title]");
foreach (var node in nodes)
{
HtmlAttribute att = node.Attributes["title"];
title = att.Value;
Response.Write("<br/>" + att.Value);
}
var Location = doc.DocumentNode.SelectNodes("//td[@width='80']");
foreach (var node in Location)
{
if (node.InnerHtml.Contains("Location:"))
{
locationname = HttpUtility.HtmlDecode(node.NextSibling.NextSibling.InnerText.Trim());
Response.Write("<br/>Location1=" + locationname);
}
}
使用上面的代码得到以下输出:
** 南区首席买家
具有德语母语水平的客户服务订单管理
EMEA 客户体验和质量实习
德语和法语水平优秀的服务台组长
具有法语母语水平的采购顾问
Jefe/a de ventas con alemán e inglés。Recien Titulados。
Jefe/a de ventas con alemán e inglés。Recien Titulados。
Jefe/a de ventas con alemán e inglés。Recien Titulados。
位置1=阿尔梅里亚
位置 1=特拉萨
位置 1=英国,曼彻斯特
位置 1=巴塞罗那
位置 1=巴塞罗那
Location1=拉科鲁尼亚
位置 1=加泰罗尼亚
位置 1=穆尔西亚 **
上面的代码可以正确地获取数据。问题是我想在数据库中插入上述数据,并且还想以正确的格式显示数据意味着财产的第一个标题,然后是它的位置 **Lead Buyer South Location1=Almeria
具有德国本地级别的客户服务订单管理 Location1=Terrassa
EMEA 客户体验和质量实习地点 1=英国,曼彻斯特
德语和法语水平优秀的服务台团队负责人 Location1=Barcelona
具有法国本地水平的采购和采购顾问 Location1=Barcelona
Jefe/a de ventas con alemán e inglés。Recien Titulados。Location1=拉科鲁尼亚
Jefe/a de ventas con alemán e inglés。Recien Titulados。位置 1=加泰罗尼亚
Jefe/a de ventas con alemán e inglés。Recien Titulados。位置 1=穆尔西亚**
通过搜索表标签的替代方法
var web = new HtmlWeb();
var doc = web.Load("http://www.talentsearchpeople.com/en/jobs/?page=joblisting&pubID=&formID=&start=0&count=8&module=&functionLevel1=&provinceNode=&countryNode=&keyword=");
var mainNode = doc.DocumentNode.SelectNodes("//table[@class='border-jobs']/*");
foreach (var mainNodes in mainNode)
{
string pathdet = mainNodes.XPath;
var nodes = mainNodes.SelectSingleNode("//a[@class='grijs'][@title]");
if (nodes != null)
{
HtmlAttribute att = nodes.Attributes["title"];
title = att.Value;
Response.Write("<br/>" + att.Value);
}
var Description = doc.DocumentNode.SelectSingleNode("//td[@colspan='2']");
if (Description.InnerHtml.Contains("Description:"))
{
s = Description.InnerHtml;
s = s.Replace("Description:", "");
Response.Write("<br/>Description=" + s);
}
var Location = doc.DocumentNode.SelectSingleNode("//td[@width='80']");
if (Location.InnerHtml.Contains("Location:"))
{
locationname = HttpUtility.HtmlDecode(Location.NextSibling.NextSibling.InnerText.Trim());
Response.Write("<br/>Location1=" + locationname);
}
}
如果我使用上面的代码,那么我得到以下输出:
助理呼叫中心经理,西班牙语和英语流利
描述= 我们正在为一家位于葡萄牙里斯本的跨国公司招聘助理呼叫中心经理。此人将负责团队管理。需要有团队管理经验,主要是联络中心,环境。
Location1=葡萄牙里斯本
我得到上述输出 8 次,因为//table[@class='border-jobs']/*标签在文档中出现 8 次
我怎样才能得到正确的输出?