Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Парсинг сайтів на C #

  1. Використання Selenium на C #
  2. Підключення Selenium до проекту
  3. Автоматизація дій за допомогою Selenium
  4. Пошук елементів по XPath
  5. Дії з елементами сторінки
  6. Плюси і мінуси парсинга за допомогою Selenium
  7. Парсинг HTML за допомогою HtmlAgilityPack

Наша взаимовыгодная связь https://banwar.org/

Використання Selenium на C #   Самий розповсюджений спосіб автоматизувати будь-які дії з вебсайтом - використання бібліотеки Selenium

Використання Selenium на C #

Самий розповсюджений спосіб автоматизувати будь-які дії з вебсайтом - використання бібліотеки Selenium. Ця бібліотека дозволяє запустити браузер і управляти всіма діями в ньому. Підтримуються всі розповсюджені браузери.

Підключення Selenium до проекту

У контекстному меню проекту вибираємо пункт «Manage NuGet Packages ...»

Далі на вкладці «Browse» знаходимо і встановлюємо пакети Selenium.WebDriver і Selenium.WebDriver.ChromeDriver. Перший пакет - сама бібліотека, другий додає в папку з зібраними проектом драйвер до хрому ChromeDriver.exe.

Автоматизація дій за допомогою Selenium

В якості тестової задачі спробуємо на цьому блозі відкрити першу сторінку з результатами пошуку за запитом «C #» і на консоль вивести заголовки і адреси знайдених статей.

Почнемо з того, що відкриємо браузер і перейдемо на головну сторінку сайту.

using OpenQA.Selenium; using OpenQA.Selenium.Chrome; ... IWebDriver driver = new ChromeDriver (); driver.Url = @ "http://lsreg.ru";

Тепер потрібно знайти інпут для введення критерію пошуку і ввести в нього текст. Пошук елементів на сторінці здійснюється за допомогою методів IWebDriver.FindElement і IWebDriver.FindElements. Ці методи вміють шукати по безлічі критеріїв: тег, css клас, xpath і інші.

Пошук елементів по XPath

XPath - це мова запитів до дерева елементів. Ось як виглядає запит діва з id = "my_div»:

.//div[@id='my_div ']

Тут точка спочатку запиту означає, що пошук здійснюється з кореня документа. Без точки пошук осущствляем б тільки в контексті поточного елемента. Подвійний слеш означає будь-яку кількість елементів. Одинарний слеш означав би, що див лежить прямо в корені документа. Пара прикладів для наглядку:

.//div[@id='my_div']//a - всі посилання всередині діва .//div[@id='my_div']/a - посилання на першому рівні вкладеності

Крім id фільтрувати можна і по інших атрибутів.

Дії з елементами сторінки

Метод FindElement повертає екземпляр IWebElement. Для введення тексту використовується метод SendKeys, для кліка є метод Click.

Знаходимо інпут і вводимо в нього рядок пошуку

driver.FindElement (By.XPath (@ ".// div [@ id = 'search-3'] / form / input [@ id = 's']")). SendKeys ( "c #");

Кількома на кнопку пошуку

driver.FindElement (By.XPath (@ ".// input [@ id = 'searchsubmit']")). Click (); Thread.Sleep (3000);

Sleep потрібен для того, щоб результати пошуку встигли відобразитися.

Тепер знаходимо все посилання всередині заголовків і відображаємо їх текст і href

var links = driver.FindElements (By.XPath ( ".// h2 / a")); foreach (IWebElement link in links) Console.WriteLine ( "{0} - {1}", link.Text, link.GetAttribute ( "href"));

Отримуємо ось такий результат

Плюси і мінуси парсинга за допомогою Selenium

плюси:

  • Сервер не відрізнить програму від реального користувача
  • Можна працювати в контентом, довантажувати динамічно

мінуси

  • Використання реального браузера уповільнює роботу і збільшує споживання ресурсів
  • Чи не підтримується .Net Core

Парсинг HTML за допомогою HtmlAgilityPack

Якщо на сайті немає захисту від ботів і весь необхідний контент віддається відразу, то можна обійтися більш легковажним рішенням - використовувати бібліотеку HtmlAgilityPack. Підключається вона так само через NuGet. Ця бібліотека будує DOM дерево по HTML. Проблема в тому, що загрожують код сторінки доведеться самим. Для завантаження сторінки я використовую ось таку функцію

static string LoadPage (string url) {var result = ""; var request = (HttpWebRequest) WebRequest.Create (url); var response = (HttpWebResponse) request.GetResponse (); if (response.StatusCode == HttpStatusCode.OK) {var receiveStream = response.GetResponseStream (); if (receiveStream! = null) {StreamReader readStream; if (response.CharacterSet == null) readStream = new StreamReader (receiveStream); else readStream = new StreamReader (receiveStream, Encoding.GetEncoding (response.CharacterSet)); result = readStream.ReadToEnd (); readStream.Close (); } Response.Close (); } Return result; }

Завантажуємо код сторінки

using HtmlAgilityPack; .. var pageContent = LoadPage (@ "http://lsreg.ru/?s=c%23"); var document = new HtmlDocument (); document.LoadHtml (pageContent);

Тут відразу вказуємо урл сторінки з результатами пошуку. Далі аналогічно по XPath знаходимо потрібні посилання і виводимо результат.

HtmlNodeCollection links = document.DocumentNode.SelectNodes ( ".// h2 / a"); foreach (HtmlNode link in links) Console.WriteLine ( "{0} - {1}", link.InnerText, link.GetAttributeValue ( "href", ""));

Другий параметр в методі GetAttributeValue - це значення за замовчуванням.

Ru/?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: