Como coletar informações do contorno.Comprar com Selenium

Olá pessoal.

Estou envolvido na automação da participação em concursos públicos .

Esta história aconteceu por causa da economia. Ao comprar uma conta paga Kontur. Comprando, não prestamos atenção à quantidade útil que a tarifa Expert oferece.

Ah, se prestássemos atenção a isso, não precisaria aprender o Selenium e o básico de Java.

Uma vez que surgiu um desafio de marketing - coletar contatos de compradores em empresas sobre o nosso assunto.

Estou procurando por todos os concursos que correspondem às palavras-chave e nas regiões certas. Nos últimos anos, concluídos e em andamento.

Na descarga da tarifa Padrão, os seguintes dados:



Existe apenas o nome da empresa. Nenhuma informação de contato para o comprador.

Agora, para não coletar manualmente os detalhes de contato do comprador, decido escrever um script.

Como o Kontur.Purchase tem a página inteira carregada com javascript, você não se safará da análise simples. Você precisa escrever um script no Selenium.

Primeiro, prepare os dados iniciais - salve o número da competição em CSV (também é um parâmetro no URL), bem como o nome da empresa, para não analisá-lo. Tudo isso no arquivo kontur_getContacts_src.csv



Em seguida, um script Java com comentários

import org.openqa.selenium.By; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.*; import org.openqa.selenium.firefox.*; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.Select; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import java.util.List; import java.util.concurrent.TimeUnit; import java.io.*; import java.nio.file.*; public class kontur_getContacts{ public static void main(String args[]) throws Exception{ //   FireFox System.setProperty("webdriver.gecko.driver", "geckodriver.exe"); FirefoxDriver driver = new FirefoxDriver();// Create a Firefox browser instance driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //   . driver.get("https://auth.kontur.ru/login.aspx?authmode=certlogin&back=https%3A%2F%2Fzakupki.kontur.ru%2FLogin%2FCallback%3FReturnUrl%3Dhttps%253A%252F%252Fzakupki.kontur.ru%252F%253Fevent-login%253D1&customize=zakupki"); //   Thread.sleep(2*1000); WebElement login_field = driver.findElement(By.cssSelector(".loginPassword__login input")); //    login_field.sendKeys("sales@mycomp.ru");//    WebElement pass_field = driver.findElement(By.cssSelector("input.input__realInput")); //   pass_field.sendKeys("password");//    Thread.sleep(1*1000); // driver.findElement(By.cssSelector("input.button__input")).click(); //      Thread.sleep(1*1000); // driver.findElement(By.cssSelector(".loginPassword__submit .button__input")).click(); //  Thread.sleep(2*1000); // String sourceFilePath = "C:/Users/user/selenium/kontur_getContacts_src.csv";//,     String resultFilePath = "C:/Users/user/selenium/kontur_getContacts_result.csv";//,    String delimeter = ";"; //       //  String name; String text; Integer flag_hasName=0; Integer flag_oneVar=0; try{ //    FileInputStream fstream = new FileInputStream(sourceFilePath); BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); String strLine;//  String[] subStr;//  //   byte[] myBytes = "".getBytes(); Files.write(Paths.get(resultFilePath), myBytes); while ((strLine = br.readLine()) != null){ //      System.out.println(strLine); //     //     subStr = strLine.split(delimeter); System.out.println("Found order_id "+subStr[0]+" and Organization is "+subStr[1]); //     driver.get("https://zakupki.kontur.ru/"+subStr[0]); /*       */ name =""; // ,      text =""; // ,       List<WebElement> tenderField_data_in=driver.findElements(By.cssSelector(".popup__mainContacts .tenderField__s div.tenderField_data_in")); //   if(tenderField_data_in.size()>0){ WebElement man = driver.findElement(By.cssSelector(".popup__mainContacts .tenderField__s div.tenderField_data_in"));//   System.out.println("FOUND is "+man.getAttribute("textContent")); //    name = man.getAttribute("textContent").trim(); //   name } //      List<WebElement> elements = driver.findElements(By.cssSelector(".tenderField .tenderField_data_in a")); System.out.println("Count elements in array is "+elements.size()); //       if(elements.size()>0){ //    WebElement email = driver.findElement(By.cssSelector(".tenderField .tenderField_data_in a")); //  text=subStr[1]+delimeter+email.getAttribute("href")+delimeter+name+"\r\n"; //         Files.write(Paths.get(resultFilePath), text.getBytes(), StandardOpenOption.APPEND); //   } } }catch (IOException e){ System.out.println("Error opening or processing file with finished purchases"); } // Close the browser instance driver.quit(); } } 

Execute o script Selenium

C:\Users\user\selenium>"C:\Program Files\Java\jdk-10.0.1\bin\javac" -cp selenium-server-standalone-3.13.0.jar; kontur_getContacts.java
* C:\Users\user\selenium>"C:\Program Files\Java\jre-10.0.1\bin\java" -cp selenium-server-standalone-3.13.0.jar; kontur_getContacts


O resultado é um arquivo de contato que você pode usar para fins de marketing.

Source: https://habr.com/ru/post/pt431510/


All Articles