c# - 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 源中的数据仍然完全返回表中的值。我不知道这是否正确。
解决方案
使用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());
}
推荐阅读
- jquery - 如何在 HTML 中冻结嵌套/复杂表的标题
- ios - Mapbox离线地图加载问题
- mysql - Mysql - 将 int 字段与另一个表中的逗号分隔字段进行比较
- javascript - 脚本泛化
- c++ - boost::mpl 不使用(甚至不兼容)std::pair 的原因是什么?
- javascript - 如何在javascript中获取变化数组的平均值
- java - 如何使用 Google Snapshot Api 在线存储应用数据?
- javascript - firestore上传文件:不支持的字段值:自定义文件对象
- node.js - 将单个文件复制到节点js中的新文件夹
- mysql - Sequelize 将此作为响应 [{'primaryKey':null}] 返回到 findAll 方法