2016-04-23 52 views
0

獲取disqus評論iframe數據我一直在嘗試使用Selenium WebDriver(Chrome)加載頁面並獲取disqus評論主題。請參閱代碼。如何使用Selenum WebDriver

public static void Main(string[] args) 
     { 
      var driver = new ChromeDriver(); 
      driver.Navigate().GoToUrl("http://nation.com.pk/blogs/05-Apr-2016/should-qandeel-baloch-s-strip-tease-really-be-a-rallying-cause-for-liberalism"); 
      var userNameField = driver.FindElementById("disqus_thread").GetAttribute("outerHTML"); 
      Console.WriteLine(userNameField); 
      Console.Read(); 
     } 

它給出以下輸出。

<div id="disqus_thread"><iframe id="dsq-app2" name="dsq-app2" allowtransparency="true" frameborder="0" scrolling="no" tabindex="0" title="Disqus" width="100%" src="http://disqus.com/embed/comments/?base=default&amp;version=af1a2e2611136ef6c314afec2806cef3&amp;f=nawaiwaqt&amp;t_u=http%3A%2F%2Fnation.com.pk%2Fblogs%2F05-Apr-2016%2Fshould-qandeel-baloch-s-strip-tease-really-be-a-rallying-cause-for-liberalism&amp;t_d=Should%20Qandeel%20Baloch%E2%80%99s%20%E2%80%98striptease%E2%80%99%20really%20be%20a%20rallying%20cause%20for%20liberalism%3F&amp;t_t=Should%20Qandeel%20Baloch%E2%80%99s%20%E2%80%98striptease%E2%80%99%20really%20be%20a%20rallying%20cause%20for%20liberalism%3F&amp;s_o=default" style="width: 1px !important; min-width: 100% !important; border: none !important; overflow: hidden !important; height: 652px !important;" horizontalscrolling="no" verticalscrolling="no"></iframe></div> 

這與我的預期背道而馳,因爲我希望能夠在此階段獲得評論html。我如何修改此代碼以獲得評論主題? PS:沒有原始頁面源中的iframe指示。

+1

您是否考慮檢查iframe的url? – charlietfl

+0

請您詳細說明。我如何檢查iframe的網址? 我也(通過閱讀其他幫助文章)發現,要與iframe交互,驅動程序元素必須切換到iframe。我不確定的是,這怎麼能改變這個事實,即這個輸出中沒有註釋線程。 –

+0

,因爲內容位於從另一個域提供的iframe內。 – charlietfl

回答

1

所以這裏是我如何獲得進一步處理的iframe源代碼。希望它可以幫助別人。

var driver = new ChromeDriver(); 
      int tmp = 1; 
      foreach(string file in File.ReadLines(@"bla bla bla\Bloglinks.txt")) 
      { 
       driver.Navigate().GoToUrl(file); 
       driver.SwitchTo().Frame("dsq-app2"); 
       var userNameField = driver.PageSource; 
       File.WriteAllText(@"bla bla bla\Comments\"+tmp+".html", userNameField); 
       Console.WriteLine(file); 
       tmp++; 
      } 
      driver.Close();