我试图修改下面的代码,以便从www.itoworld.com/careers中删除工作。这些作业采用表格格式,并返回所有<<<<<<>>值。
我相信它来自这条线:
<a class="std-btn" href="http://www.itoworld.com/office-manager/">Office Manager</a>
但是,我想写它:
<a href='http://www.itoworld.com/office-manager/' target='_blank'>Office ManagerOffice & AdminCambridgeFind out more</a>
目前正在撰写
public string ExtractIto()
{
string sUrl = "http://www.itoworld.com/careers/";
GlobusHttpHelper ghh = new GlobusHttpHelper();
List<Links> link = new List<Links>();
bool Next = true;
int count = 1;
string html = ghh.getHtmlfromUrl(new Uri(string.Format(sUrl)));
HtmlAgilityPack.HtmlDocument hd = new HtmlAgilityPack.HtmlDocument();
hd.LoadHtml(html);
var hn = hd.DocumentNode.SelectSingleNode("//*[@class='btn-wrapper']");
var hnc = hn.SelectNodes(".//a");
foreach (var node in hnc)
{
try
{
var parentnode = node.ParentNode.ParentNode.ParentNode.FirstChild.NextSibling;
Links l = new Links();
l.Name = ParseHtmlContainingText(parentnode.InnerText);
l.Link = node.GetAttributeValue("href", "");
link.Add(l);
}
}
string Xml = getXml(link);
return WriteXml(Xml);
我计划蛮力&#39;修改输出以删除不必要的额外内容,但希望有更聪明的方法来做到这一点。有没有办法在调用后删除第二个和第三个ParentNode? (所以他们不写?)
public string ParseHtmlContainingText(string htmlString)
{
return Regex.Replace(Regex.Replace(WebUtility.HtmlDecode(htmlString), @"<[^>]+>| ", ""), @"\s{2,}", " ").Trim();
}
为了完整性,下面是ParseHtmlContainingText的定义
php artisan config:clear
答案 0 :(得分:0)
您只需要创建一个“名称节点”并将其用于您的解析方法。
我使用此代码进行测试,它对我有用。
var parentnode = node.ParentNode.ParentNode.ParentNode.FirstChild.NextSibling;
var nameNode = parentnode.FirstChild;
Links l = new Links();
l.Name = ParseHtmlContainingText(nameNode.InnerText);
l.Link = node.GetAttributeValue("href", "");