2016-04-23 6 views
0

Ich habe versucht, Selenium WebDriver (Chrome) zu verwenden, um eine Seite zu laden und disques Kommentare zu erhalten. Bitte sehen Sie den Code.So erhalten Sie Kommentare über iframe-Daten mit 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(); 
     } 

Es gibt die folgende Ausgabe.

<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> 

Das ist entgegen meiner Erwartungen, wie ich in diesem Stadium Kommentare in HTML erhalten wollte. Wie kann ich diesen Code ändern, um den Kommentar-Thread zu erhalten? PS: In der ursprünglichen Seitenquelle wird kein Iframe angezeigt.

+1

Haben Sie in Erwägung gezogen, die URL für den iframe zu überprüfen? – charlietfl

+0

Könnten Sie bitte näher ausführen. Wie kann ich die URL für iframe überprüfen? Ich habe auch (durch Lesen anderer Hilfeposts) herausgefunden, dass zur Interaktion mit einem Iframe das Treiberelement zu iframe wechseln muss. Was ich nicht sicher bin, ist, wie kann dies die Tatsache ändern, dass in dieser Ausgabe kein Kommentar-Thread angezeigt wird. –

+0

, weil der Inhalt innerhalb eines Iframes liegt, der von einer anderen Domäne geliefert wird. – charlietfl

Antwort

1

Also hier ist, wie ich den iframe-Quellcode für die weitere Verarbeitung bekommen konnte. Hoffe es hilft jemand anderem.

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(); 
Verwandte Themen