Ich versuche, den Code unten zu ändern, um Jobs von www.itoworld.com/careers zu kratzen. Die Jobs sind in einem Tabellenformat und geben alle Werte < 'td> zurück.Web-Scrape-Projekt zu viel Information schreiben
Ich glaube, es aus der Leitung kommt:
var parentnode = node.ParentNode.ParentNode.ParentNode.FirstChild.NextSibling
Allerdings mag ich es schreiben:
<a class="std-btn" href="http://www.itoworld.com/office-manager/">Office Manager</a>
Derzeit ist es das Schreiben
<a href='http://www.itoworld.com/office-manager/' target='_blank'>Office ManagerOffice & AdminCambridgeFind out more</a>
ich auf ‚Brute-Plan Erzwinge, die Ausgabe zu ändern, um unnötige Extras zu entfernen, aber hoffte, dass es einen klügeren Weg gibt, dies zu tun. Gibt es eine Möglichkeit, zum Beispiel den zweiten und dritten ParentNode nach dem Aufruf zu entfernen? (So dass sie nicht geschrieben werden?)
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);
Der Vollständigkeit unten ist die Definition von ParseHtmlContainingText
public string ParseHtmlContainingText(string htmlString)
{
return Regex.Replace(Regex.Replace(WebUtility.HtmlDecode(htmlString), @"<[^>]+>| ", ""), @"\s{2,}", " ").Trim();
}
Das ist perfekt. Vielen Dank. Ich werde versuchen, die Vererbung besser zu verstehen. –