2017-02-17 90 views
0

我想獲取具有特定屬性的表格的HTML源代碼。下面的代碼將幫助您瞭解更多信息。獲取具有特定屬性的表格的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請求來獲取源碼時,它會自動給我格林威治標準時間GMT -5:00。

我怎樣才能得到源例如格林威治標準時間0:00?

+0

正如我告訴你前一個問題中,敏捷性包不能運行JavaScript和除了HTTP單一調用HTML返回的默認值之外,沒有辦法獲取任何數據。爲了做到這一點,你需要一個無頭瀏覽器或'WebView',就像我們在上一個答案中使用的那樣。考慮使用* Awesomium *(http://www.awesomium.com/)。它是免費的,並且有一些用於無頭瀏覽的好用工具,就像一個'WebView'獨立類。 –

回答

0

隨着HTML敏捷性包,您可以使用下面的擴展方法來獲得一個特定的元素具有特定屬性的:

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(); 
+0

我不認爲這是正確的答案。具有所需GMT時間的表格不可用。唯一可用的是標準格林威治標準時間-5:00。 顯然有一個標題,必須在請求之前設置。我仍然在試圖弄清楚。 –

+0

啊,在這種情況下,您必須使用Fiddler或Chrome的網絡工具等功能來計算當您更改組合框選擇時發生的情況。以上代碼用於獲取特定元素的HTML源代碼。 –

相關問題