在没有htmlagilitypack

时间:2015-10-14 07:42:01

标签: asp.net .net

由于系统的限制,我不允许使用htmlagilitypack,因为我没有权利引用该库。所以我只能使用原生的asp.net编程语言来解析页面。

e.g。我想废弃这个页面 https://sg.linkedin.com/job/google/jobs/ 来获取谷歌工作列表(只是一个例子,我并不打算获得这个列表,但我自己的公司),我看到他们在 我如何才能添加这些职位说明和名称。

我目前的代码是

System.Net.WebClient client = new System.Net.WebClient();
try{
    System.IO.Stream myStream = client.OpenRead("https://sg.linkedin.com/job/google/jobs/");
    System.IO.StreamReader sr = new System.IO.StreamReader(myStream);
    string htmlContent = sr.ReadToEnd();
    //do not know how to carry on
}catch(Exception e){
    Response.Write(e.Message);
}

我怎么能继续?

1 个答案:

答案 0 :(得分:0)

您可以获取该页面并使用正则表达式来隔离有用的部分。如果你真的很幸运,你可能有一个有效的XML文件:

var html = new WebClient().DownloadString("https://sg.linkedin.com/job/google/jobs/");
var jobs = new XmlDocument();
    jobs.LoadXml(Regex.Replace(Regex.Match(html,
        @"<ul class=""jobs"">[\s\S]*?</ul>").Value,
        @"itemscope | itemprop="".*?""", "")); // clean invalid attributes

foreach (XmlElement job in jobs.SelectNodes("//li[@class='job']"))
{
    Console.WriteLine(job.SelectSingleNode(".//a[@class='company']").InnerText);
    Console.WriteLine(job.SelectSingleNode(".//h2/a").InnerText);
    Console.WriteLine(job.SelectSingleNode(".//p[@class='abstract']").InnerText);
    Console.WriteLine();
}