从HTML字符串中提取HREF值

时间:2019-01-15 23:52:26

标签: c# webclient-download

2 个答案:

答案 0 :(得分:2)

您可以查看HTML Agility Pack:

然后,您可以从网页中找到所有链接,例如:

 var hrefs = new List<string>();
 var hw = new HtmlWeb();
 HtmlDocument document = hw.Load(/* your url here */);
 foreach(HtmlNode link in document.DocumentNode.SelectNodes("//a[@href]"))
 {
    HtmlAttribute attribute = link.Attributes["href"];

    if (!string.IsNullOrWhiteSpace(attribute.Value))
        hrefs.Add(attribute.Value);
 }

答案 1 :(得分:0)

首先,您可以创建一个函数来返回整个网站的HTML代码。这是我的一个!

public string GetPageContents()
{
    string link = "https://www.abc.net.au/news/science/"
    string pageContent = "";
    WebClient web = new WebClient();
    Stream stream;

    stream = web.OpenRead(link);
    using (StreamReader reader = new StreamReader(stream))
    {
        pageContent = reader.ReadToEnd();
    }
    stream.Close();

    return pageContents;
}

然后,您可以创建一个返回子字符串或子字符串列表的函数(这意味着,如果需要所有标签,则可能会得到多个)。

List<string> divTags = GetBetweenTags(pageContents, "<div>", "</div>")

这将为您提供一个列表,例如,您可以在每个

标签中再次搜索标签。

public List<string> GetBetweenTags(string pageContents, string startTag, string endTag)
{
    Regex rx = new Regex(startTag + "(.*?)" + endTag);
    MatchCollection col = rx.Matches(value);

    List<string> tags = new List<string>();

    foreach(Match s in col)
        tags.Add(s.ToString());

    return tags;
}

编辑:哇,我不知道HTML Agility Pack,谢谢@Gauravsa,我将更新我的项目以使用它!