【发布时间】:2015-11-09 15:39:48
【问题描述】:
我正在构建一个 C# Windows Phone 8.1 应用程序。应用程序的一部分需要去查找特定网页上的信息。我需要的字段之一是可以在页面上的某些项目上找到的 URL,但是我发现 URL 是相对样式的格式
FullArticle.aspx?a=323495
我想知道在 C# 中是否有一种方法可以使用 HtmlAgilityPack、HttpWebRequest 等来找到指向实际页面的链接。代码 sn-p 如下。
private static TileUpdate processSingleNewsItem(HtmlNode newsItemNode)
{
Debug.WriteLine("");
var articleImage = getArticleImage(getNode(newsItemNode, "div", "nw-container-panel-articleimage"));
var articleDate = getArticleDate(getNode(newsItemNode, "div", "nw-container-panel-articledate"));
var articleSummary = getArticleSummary(getNode(newsItemNode, "div", "nw-container-panel-textarea"));
var articleUrl = getArticleUrl(getNode(newsItemNode, "div", "nw-container-panel-articleimage"));
return new TileUpdate{
Date = articleDate,
Headline = articleSummary,
ImagePath = articleImage,
Url = articleUrl
};
}
private static string getArticleUrl(HtmlNode parentNode)
{
var imageNode = parentNode.Descendants("a").FirstOrDefault();
Debug.WriteLine(imageNode.GetAttributeValue("href", null));
return imageNode.GetAttributeValue("href", null);
}
private static HtmlNode getNode(HtmlNode parentNode, string nodeType, string className)
{
var children = parentNode.Elements(nodeType).Where(o => o.Attributes["class"].Value == className);
return children.First();
}
将不胜感激任何想法或解决方案。干杯!
【问题讨论】:
-
如果链接是相对格式的,难道不可以直接加上当前的URL作为前缀来获取完整的URL吗?也许将
Reqest.AbsoluteUri传入processSingleNewsItem?
标签: c# html web-scraping