So sammeln Sie Informationen aus der Kontur. Einkauf mit Selen

Hallo an alle.

Ich beschäftige mich mit der Automatisierung der Teilnahme an staatlichen Ausschreibungen .

Diese Geschichte geschah aufgrund von Einsparungen. Beim Kauf eines Kontur-Kaufkontos haben wir nicht darauf geachtet, wie nützlich der Expertentarif ist.

Ah, wenn wir darauf achten würden, müsste ich Selen und die Grundlagen von Java nicht lernen.

Einmal entstand eine Marketing-Herausforderung - Kontakte von Käufern in Unternehmen zu unserem Thema zu sammeln.

Ich suche nach allen Wettbewerben, die mit Keywords übereinstimmen und in den richtigen Regionen liegen. Für alle vergangenen Jahre abgeschlossen und laufend.

Beim Entladen zum Standardtarif gelten folgende Daten:



Es gibt nur einen Firmennamen. Keine Kontaktinformationen für den Käufer.

Um die Kontaktdaten des Käufers nicht manuell zu erfassen, entscheide ich mich, ein Skript zu schreiben.

Da bei Kontur.Purchase die gesamte Seite mit Javascript geladen ist, können Sie nicht einfach analysieren. Sie müssen ein Skript in Selen schreiben.

Bereiten Sie zunächst die Anfangsdaten vor - speichern Sie die Wettbewerbsnummer in CSV (dies ist auch ein Parameter in der URL) sowie den Namen des Unternehmens, um sie nicht zu analysieren. All dies in der Datei kontur_getContacts_src.csv



Als nächstes ein Java-Skript mit Kommentaren

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

Führen Sie das Selenium-Skript aus

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


Das Ergebnis ist eine Kontaktdatei, die Sie für Marketingzwecke verwenden können.

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


All Articles