Comment collecter des informations sur le contour. Acheter avec du sélénium

Bonjour à tous.

Je suis engagé dans l' automatisation de la participation aux appels d'offres du gouvernement .

Cette histoire s'est produite grâce aux économies. Lors de l'achat d'un compte payant Kontur. Achats, nous n'avons pas fait attention à l'utilité du tarif Expert.

Ah, si nous y prêtions attention, je n'aurais pas à apprendre le sélénium et les bases de Java.

Une fois qu'un défi marketing est apparu - recueillir les contacts des acheteurs dans les entreprises sur notre sujet.

Je recherche tous les concours qui correspondent à des mots clés et dans les bonnes régions. Pour toutes les années passées, terminées et en cours.

Dans le déchargement au tarif Standard, les données suivantes:



Il n'y a qu'un nom de société. Aucune information de contact pour l'acheteur.

Maintenant, afin de ne pas collecter manuellement les coordonnées de l'acheteur, je décide d'écrire un script.

Étant donné que Kontur.Purchase a la page entière chargée avec javascript, vous ne vous en sortirez pas avec une analyse simple. Vous devez écrire un script en sélénium.

Tout d'abord, préparez les données initiales - enregistrez le numéro du concours en CSV (c'est aussi un paramètre dans l'URL), ainsi que le nom de l'entreprise, afin de ne pas les analyser. Tout cela dans le fichier kontur_getContacts_src.csv



Ensuite, un script Java avec des commentaires

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(); } } 

Exécutez le 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


Le résultat est un fichier de contacts que vous pouvez utiliser à des fins de marketing.

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


All Articles