这是获取链接的代码:
private List<string> getLinks(HtmlAgilityPack.HtmlDocument document)
{
List<string> mainLinks = new List<string>();
var linkNodes = document.DocumentNode.SelectNodes("//a[@href]");
if (linkNodes != null)
{
foreach (HtmlNode link in linkNodes)
{
var href = link.Attributes["href"].Value;
mainLinks.Add(href);
}
}
return mainLinks;
}
有时我获得的链接就像“/”或:
一样开始“/视频?特征= MH” 要么 “//www.youtube.com/my_videos_upload”
我不确定“/”是否意味着适当的网站或以“/ videoes”开头的网站?... 或者“//www.youtube ......
我每次都需要获取以http或https开头的网站的链接,也许只是www也算作一个合适的网站。问题是我将其定义为适当的网站地址和链接,而不是什么?
我确定我的getLinks功能不好,但代码不是正确的方式。
这是我添加链接到List的方式:
private List<string> test(string url, int levels , DoWorkEventArgs eve)
{
HtmlAgilityPack.HtmlDocument doc;
HtmlWeb hw = new HtmlWeb();
List<string> webSites;// = new List<string>();
List<string> csFiles = new List<string>();
try
{
doc = hw.Load(url);
webSites = getLinks(doc);
webSites是一个列表 几次我在列表网站中看到“/”或如上所述“//视频......或”// www ....
答案 0 :(得分:0)
不确定是否理解了你的问题但是
/视频表示它正在从您正在访问的主机的根目录中访问“视频”文件夹
例如:
www.somesite.com/Videos
答案 1 :(得分:0)
有绝对和相对的Urls - 所以你从不同的链接获得不同的风格,你需要适当地使它们成为绝对URL(Uri类主要为你处理它)。
答案 2 :(得分:0)
看起来您正在使用能够解析/读取html标记的库。
为了我的理解
var href = link.Attributes [“href”]。值;
除了读取“href”属性的值之外什么都不做。
假设网站的源代码使用的链接如href =“/ news” 它会抓取并保存到列表的相关链接。
只需查看目标网站的源代码,然后根据结果进行检查。