2017-12-27 1 views
0

Ich extrahiere Beiträge von Instagram mit Selen, so bekomme ich Bild src und seinen Text. Das Problem ist, dass während des Extrahierens gleiche src und anderer Text für einen solchen Post extrahiert wird.

Hier ist mein Codeextrahiert dasselbe Ergebnis mit Selen C#

var options = new ChromeOptions(); 
options.AddArguments("--disable-gpu"); 
var driverService = ChromeDriverService.CreateDefaultService(); 
driverService.HideCommandPromptWindow = true; 
var dr = new ChromeDriver(driverService, options); 
for (int d = 0; d < listBox1.Items.Count; d++) 
{ 
    dr.Navigate().GoToUrl("https://www.instagram.com/" + listBox1.Items[d].ToString()); 
    var number = dr.FindElementByClassName("_fd86t").Text; 
    Thread.Sleep(100); 
    dr.FindElementByClassName("_si7dy").Click(); 
    for (int s = 0; s < Convert.ToInt32(numericUpDown1.Value); s++) 
    { 
     Thread.Sleep(1000); 

     if (dr.FindElements(By.XPath("/html/body/div[4]/div/div[2]/div/article/div[1]/div/div/div/div[2]/a")).Count != 0) 
     { 
      dr.Keyboard.SendKeys(OpenQA.Selenium.Keys.Right); 
     } 
     else 
     { 
      var src = dr.FindElementByClassName("_2di5p").GetAttribute("src"); 
      var pra = dr.FindElementByClassName("_ezgzd").FindElement(By.TagName("span")).Text; 
      this.Invoke(new MethodInvoker(delegate() 
      { 
       dataGridView1.Rows.Add(src.ToString(), pra.ToString()); 

      })); 
      dr.Keyboard.SendKeys(OpenQA.Selenium.Keys.Right); 

     } 
    } 
} 
+0

Nicht sicher, aber Sie sollten alle anderen Attribute dieses Elements sowie seine umgebenden Elemente überprüfen. –

+0

nah es hat keine Beziehung Schiff –

Antwort

0

Try this: ""

der Klassenname auf XPath-Suche Durch Ersetzen Durch das Hinzufügen Es wird den relevanten Knoten auswählen. andernfalls wählt es das erste Vorkommen dieser Klasse aus.

dr.FindElementByXpath(".//*[@class='_si7dy'").GetAttribute("src"); 
+0

, aber es funktioniert immer noch das gleiche Problem –