public IEnumerable <JobVacancy> GetDataFromWebsite() { var chromeOptions = new ChromeOptions(); chromeOptions.AddArguments("--headless"); var driver = new ChromeDriver(_chromeUrl, chromeOptions); driver.Navigate().GoToUrl(_websiteUrl); var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); wait.Until(d => d.FindElement(By.CssSelector("#container"))); var vacancyElements = driver.FindElements(By.CssSelector(".vacancy")); foreach (var vacancyElement in vacancyElements) { //Thread.Sleep(TimeSpan.FromSeconds(5)); var vacancy = new JobVacancy { Title = vacancyElement.FindElement(By.CssSelector(".title"))?.Text, VacancyUrl = vacancyElement.FindElement(By.CssSelector(".title a.vt"))?.GetAttribute("href"), CompanyName = vacancyElement.FindElement(By.CssSelector(".company"))?.Text, Description = vacancyElement.FindElement(By.CssSelector(".sh-info"))?.Text }; yield return(vacancy); } driver.Close(); }
public static void SendData(JobVacancy job) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null); var properties = channel.CreateBasicProperties(); properties.Persistent = true; Console.WriteLine(job.CompanyName); var body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(job)); channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: properties, body: body); } }