对不起,我的英语不是我的第一语言。
第1类是我的属性,list第2类是我的html解析器。
目前,它的工作是打开网页,并按照设想找到链接。
现在的问题是,我想使用Linq,另一个列表,或者你们认为最好的。按studRet(名称)对结果进行排序
因此,它从“it支持者”"href“中找到的所有结果都是按
[医]支持者
结果
结果
芬兰人
结果
结果
我应该如何做到这一点,什么是最佳实践,任何能引导我找到答案的好例子?
我不知道如何确保它找到的链接来自正确的studRet。
我希望这是个好问题。
Class1
private readonly List<Property> dataList = new List<Property>();
// Get property
internal struct Property
{
public readonly string url;
public readonly string cssTag;
public readonly string studRet;
public readonly int id;
public Property(string url, string cssTag, string studRet, int id)
{
this.url = url;
this.cssTag = cssTag;
this.studRet = studRet;
this.id = id;
}
}
public List<Property> GetList()
{
dataList.Add(new Property("http://elevplads.dk/annoncer?search=It-Supporter", "//div[@class='col-xs-12 col-sm-12 col-md-12']//a", "itsupporter", 1));
dataList.Add(new Property("http://elevplads.dk/annoncer?stillingstype=finans", "//div[@class='col-xs-12 col-sm-12 col-md-12']//a", "finans", 2));
return dataList;
}类别2
public readonly Jobbot Jobdata = new Jobbot();
public void HandleHtml()
{
List<Jobbot.Property> dataList = Jobdata.GetList();
HtmlWeb web = new HtmlWeb();
foreach (var data in dataList)
{
HtmlDocument document = web.Load(data.url);
var nodes = document.DocumentNode.SelectNodes(data.cssTag);
if (nodes != null)
{
foreach (HtmlNode item in nodes)
{
if (item.Attributes.Contains("href"))
{
if (item.Attributes["href"].Value.StartsWith("http://"))
{
Console.WriteLine(item.Attributes["href"].Value);
}
}
}
}
}
} // End发布于 2016-04-27 08:43:13
我不太明白你的问题。您已经按照您希望的结果集的顺序发送web请求,所以我不明白您为什么需要对它们进行排序。至于使用studRet属性映射链接,可以将结果放入列表中:
public void HandleHtml()
...
List<Tuple<string, Jobbot.Property>> results = new List<Tuple<string, Jobbot.Property>>();
...
if (item.Attributes["href"].Value.StartsWith("http://"))
{
results.Add(Tuple.Create(item.Attributes["href"].Value, data));
Console.WriteLine(item.Attributes["href"].Value);
}然后,如果您确实需要对结果进行排序,您可以使用:
results.OrderBy(x => x.Item2.studRet);但正如前面提到的,在你的情况下,这是不必要的。
https://stackoverflow.com/questions/36883570
复制相似问题