硒除噪

时间:2018-06-21 11:29:01

标签: javascript java selenium

我从一个网站中提取了一些细节,它显示在硒的控制台中。它包含一些我不需要的额外内容。是删除这些东西可以手动完成还是我缺少一些概念??

这是代码的一部分: 公共类硒{

public static void main(String[] args) throws InterruptedException {
    // TODO Auto-generated method stub
    int i=1;
    System.setProperty("webdriver.gecko.driver", "F:\\Downloads\\Downloads\\geckodriver-v0.21.0-win64\\geckodriver.exe");
    WebDriver driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get("https://www.amazon.in/");
    WebElement text=driver.findElement(By.id("twotabsearchtextbox"));
    text.sendKeys("Samsung Phones");
    text.submit();
    Thread.sleep(5000);
    while(i==1)
    {
    //List<WebElement> links=driver.findElements(By.cssSelector(".a-size-base.s-inline.s-access-title.a-text-normal")); 
List<WebElement>links=driver.findElements(By.partialLinkText("Samsung"));
    System.out.println(links.size());
    for(WebElement link : links)       
    {
        //if(link.getText().contains("Samsung"))
         System.out.println(link.getText());  

image-data extracted

问题:

  1. 在搜索三星手机时,我也获得了三星保护套的数据。
  2. 对于提取的每一页数据,还会打印用于搜索“三星手机”的文本。

2 个答案:

答案 0 :(得分:0)

问题1:这是无法避免的。但是您可以尝试使用以下xpath

//ul/li[contains(@class,'s-result-item')]//a/h2[not(contains(.,'cover'))]

问题2 :xpath仅解决了上面给出的结果项。更改代码中的以下行。

List<WebElement>links=driver.findElements(By.partialLinkText("Samsung"));

使用

List<WebElement>links=driver.findElements(By.xpath("//ul/li[contains(@class,'s-result-item')]//a/h2[not(contains(.,'cover'))]
"));

答案 1 :(得分:0)

这将为您提供元素的确切数量(无盖):

//a//h2[not(contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),'cover'))]

它将忽略所有封面元素(不区分大小写)

在driver.findElements()中使用此选择器,您就完成了。