获取具有特定属性的表的HTML源代码

时间:2017-02-17 21:58:34

标签: c# html http uwp html-agility-pack

我正在尝试获取具有特定属性的表的HTML源代码。 以下代码将帮助您了解更多信息。

public static async Task GetCldInfos()
{
    string sURL = @"https://www.investing.com/economic-calendar/";
    using (HttpClient clientduplicate = new HttpClient())
    {
        clientduplicate.DefaultRequestHeaders.Add("User-Agent",
            "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident / 6.0)");

        using (HttpResponseMessage responseduplicate = await clientduplicate.GetAsync(sURL))
        using (HttpContent contentduplicate = responseduplicate.Content)
        {
            try
            {
                string resultduplicate = await contentduplicate.ReadAsStringAsync();

                //var websiteduplicate = new HtmlDocument();
                //websiteduplicate.LoadHtml(resultduplicate);
                Debug.WriteLine(resultduplicate);
            }
            catch (Exception ex1)
            {
                throw ex1.InnerException;
            }
        }
    }
}

当我们访问here时,我们可以选择设置时间范围。 我们选择的时间范围相应地修改了表格。 当我做一个http请求来获取源代码时它会自动给我标准格林尼治标准时间格林威治标准时间-5:00。

如何以GMT 0:00获取源代码?

1 个答案:

答案 0 :(得分:0)

使用HTML Agility Pack,您可以使用以下扩展方法来获取具有特定属性的特定元素:

    public static IEnumerable<HtmlNode> GetNodesByAttr(this HtmlDocument htmlDoc, string tag, string attributeName, string attributeValue)
    {
        var allTags = htmlDoc.DocumentNode.Descendants(tag);

        return (from htmlNode in allTags
                select htmlNode.Attributes
                    into attrs
                    from attr in attrs
                    where attr.Name == attributeName && attr.Value == attributeValue
                    select attr).Select(attr => attr.OwnerNode).ToList();

    }

例如,如果您想要 “gmt0”找到表格,您可以像这样调用扩展方法:

var websiteduplicate = new HtmlDocument();
websiteduplicate.LoadHtml(resultduplicate);

var myElement = websiteduplicate.GetNodesByAttr("table", "class", "gmt0").FirstOrDefault();