我正在尝试使用HtmlAgilityPack在Windows Phone上解析网站内容。我当前的代码是:
HtmlWeb.LoadAsync(url, DownloadCompleted);
...
void DownloadCompleted(object sender, HtmlDocumentLoadCompleted e)
{
if (e.Error == null)
{
HtmlDocument doc = e.Document;
if (doc != null)
{
string test = doc.DocumentNode.Element("html").Element("body").Element("form").Elements("div").ElementAt(2).Element("table").Element("tbody").Elements("tr").ElementAt(4).Element("td").Element("center").Element("div").InnerText.ToString();
System.Diagnostics.Debug.WriteLine(test);
}
}
}目前,当我运行上面的代码时,我在string test = doc.DocumentNode.Element("html").Element("body").Element("form").Elements("div").ElementAt(2).Element("table").Element("tbody").Elements("tr").ElementAt(4).Element("td").Element("center").Element("div").InnerText.ToString();上得到了一个ArgumentOutOfRangeException。
doc.DocumentNode.Element("html").InnerText.ToString()似乎给了我整个页面的源代码。
我要解析的网站的网址是:http://polyclinic.singhealth.com.sg/Webcams/QimgPage.aspx?Loc_Code=BDP
发布于 2013-07-12 17:04:42
如果我没弄错的话,看起来你要找的是一个特定的DIV,它有一个唯一的标识符<td class="queueNo"><center><div id="divRegPtwVal">0</div></center></td>。
为什么不简单地使用doc.DocumentNode.SelectSingleNode("//div[@id='divRegPtwVal']")或doc.DocumentNode.Descendants("div").Where(div => div.Id == "divRegPtwVal").FirstOrDefault()
选择id为的特定镜像的图像源:
var attrib = doc.DocumentNode.SelectSingleNode("//img[@id='imgCam2']/@src");
//I suspect, might be a slightly different property, I can't check right now
string src = attrib.InnerText;或者:
var img = doc.DocumentNode.Descendants("img").Where(img => img.Id=="imgCam2");
string src = img.Attributes["Source"].Value;https://stackoverflow.com/questions/17610305
复制相似问题