首页 > 解决方案 > Webdriver Selenium 无法获取表中的所有信息

问题描述

我根据链接获取产品信息的数据:https ://www.amazon.com/dp/B005NASSRO/ ,获取数据需要的信息如图:

图片

这是我的代码

_webDriver.Url = $"https://www.amazon.com/dp/B005NASSRO";

var hasUpc = _webDriver.FindElements(By.XPath("//div[@id='bissProductSpecification_feature_div']/div[@class='a-section a-spacing-large pzr-features-containers']/div/div/div/div/table[@id='product-specification-table']/tbody/tr"), 30);
                    string ean = "";
                    string mpn = "";
                    foreach (var element in hasUpc)
                    {
                        string el = element.FindElement(By.XPath("th")).Text;
                        Console.WriteLine(el);
                        if (element.FindElement(By.XPath("th")).Text.Trim().Equals("UPC") || element.FindElement(By.XPath("th")).Text.Trim().Equals("Global Trade Identification Number"))
                        {
                            upc = element.FindElement(By.XPath("td")).Text.Trim();
                        }
                        if (element.FindElement(By.XPath("th")).Text.Trim().Equals("Ean"))
                        {
                            ean = element.FindElement(By.XPath("td")).Text.Trim();
                        }
                        if (element.FindElement(By.XPath("th")).Text.Trim().Equals("Model Number"))
                        {
                            mpn = element.FindElement(By.XPath("td")).Text.Trim();
                        }
                    } 

而这个结果:

图片链接

html 源中的数据仍然完全返回表中的值。我不知道这是否正确。

标签: c#htmlseleniumwebdriver

解决方案


使用java。这将仅输出 2 列。

driver.get("https://www.amazon.com/dp/B005NASSRO");

driver.findElement(By.xpath("//span[contains(text(),'See more')]")).click();
List<WebElement> list = driver.findElements(By.cssSelector("table[id*=product-specification-table]  tbody tr td"));

int i = 0;
for(WebElement row : list) {
    System.out.println(row.getText());
}

推荐阅读