如何从轮廓中收集信息。

大家好

我从事政府招标自动化

这个故事的发生是由于节省。 当购买付费帐户Kontur。Purchasing时,我们没有注意专家级费率有多大用处。

嗯,如果我们注意这一点,那么我就不必学习Selenium和Java基础知识。

一旦出现营销挑战-就我们的主题收集公司中买家的联系方式。

我正在寻找所有在正确区域内匹配关键字的比赛。 在过去的几年中,已完成且正在进行中。

在以标准费率卸载时,以下数据:



只有公司名称。 没有买家的联系信息。

现在,为了不手动收集买家的联系方式,我决定编写一个脚本。

由于Kontur.Purchase的整个页面都加载了javascript,因此您无法摆脱简单的解析。 您必须使用Selenium编写脚本。

首先,准备初始数据-将竞赛编号保存为CSV(也是URL中的参数)以及公司名称,以免对其进行解析。 所有这些都在kontur_getContacts_src.csv文件中



接下来,带有注释的Java脚本

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

运行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


结果是一个联系人文件,您可以将其用于营销目的。

Source: https://habr.com/ru/post/zh-CN431510/


All Articles