Веб-збирання, також відоме як веб-сканування, веб-збирання або збирання даних, використовується для отримання даних із веб-сайтів. Веб-скребок використовує різні селектори даних, як-от селектори CSS, XPath або обидва з них, щоб отримати дані з веб-сторінок. Обидва ці селектори ефективні для збору та аналізу інформації з Інтернету. У цій статті розповідається про те, як створити веб-скребок у C#, зокрема про навігацію HTML, запит XPath і селектор CSS.
- Бібліотека веб-скрапування C#
- Створення веб-скребка на C#
- Використовуйте запит XPath для створення веб-скребка в C#
- Використовуйте CSS Selector для веб-скрапінгу в C#
Бібліотека веб-скрапування C#
Aspose.HTML for .NET – це бібліотека для копіювання веб-сайтів, яку можна легко налаштувати, завантаживши довідкові файли DLL із розділу Нові випуски або виконавши наступну команду встановлення NuGet. :
PM> Install-Package Aspose.Html
Створення веб-скребка на C#
Ви можете використовувати різні властивості класу Node для навігації документами HTML. Наведений нижче фрагмент коду пояснює, як переміщатися веб-сторінкою HTML у C#:
// Підготуйте HTML код
var html_code = "<span>Hello</span> <span>World!</span>";
// Ініціалізація документа з підготовленого коду
using (var document = new Aspose.Html.HTMLDocument(html_code, "."))
{
// Отримайте посилання на першу дитину (перший SPAN) BODY
var element = document.Body.FirstChild;
Console.WriteLine(element.TextContent); // output: Hello
// Отримати посилання на пробіли між елементами html
element = element.NextSibling;
Console.WriteLine(element.TextContent); // output: ' '
// Отримати посилання на другий елемент SPAN
element = element.NextSibling;
Console.WriteLine(element.TextContent); // output: World!
}
Перевірка HTML за допомогою Web Scraper у C#
API також забезпечує узагальнене використання функцій обходу елементів. Наведений нижче фрагмент коду демонструє, як виконати детальну перевірку різних елементів API.
//Завантажити документ із файлу
string documentPath = System.IO.Path.Combine(DataDir, "html_file.html");
// Укажіть шлях до вихідного файлу HTML у вашій локальній файловій системі
using (var document = new Aspose.Html.HTMLDocument(documentPath))
{
// Отримайте елемент html документа
var element = document.DocumentElement;
Console.WriteLine(element.TagName); // HTML
// Отримайте останній елемент елемента html
element = element.LastElementChild;
Console.WriteLine(element.TagName); // BODY
// Отримайте перший елемент елемента body
element = element.FirstElementChild;
Console.WriteLine(element.TagName); // H1
Console.WriteLine(element.TextContent); // Header 1
}
Використання спеціального фільтра для Web Scraper у C#
Ви можете реалізувати спеціальний фільтр за допомогою об’єкта інтерфейсу ITreeWalker або INodeIterator разом із реалізацією спеціального фільтра. Наведений нижче фрагмент коду пояснює, як слідувати процесу:
class OnlyImageFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
public override short AcceptNode(Aspose.Html.Dom.Node n)
{
// Поточний фільтр пропускає всі елементи, крім елементів IMG.
return string.Equals("img", n.LocalName)
? FILTER_ACCEPT
: FILTER_SKIP;
}
}
Після впровадження спеціального фільтра ви зможете швидко переходити веб-сторінкою за допомогою такого коду:
var code = @"
<p>Hello</p>
<img src='image1.png'>
<img src='image2.png'>
<p>World!</p>";
// Ініціалізація документа на основі підготовленого коду
using (var document = new Aspose.Html.HTMLDocument(code, "."))
{
// Щоб почати HTML-навігацію, нам потрібно створити екземпляр TreeWalker.
// Зазначені параметри означають, що він починає проходити з кореня документа, повторюючи всі вузли та використовувати нашу спеціальну реалізацію фільтра
using (var iterator = document.CreateTreeWalker(document, Aspose.Html.Dom.Traversal.Filters.NodeFilter.SHOW_ALL, new OnlyImageFilter()))
{
while (iterator.NextNode() != null)
{
// Оскільки ми використовуємо власний фільтр, поточний вузол завжди буде екземпляром HTMLImageElement.
// Отже, нам не потрібні додаткові перевірки.
var image = (Aspose.Html.HTMLImageElement)iterator.CurrentNode;
System.Console.WriteLine(image.Src);
// вихід: image1.png
// вихід: image2.png
}
}
}
Використовуйте запит XPath для створення веб-скребка в C#
XPath можна використовувати для отримання даних із документів HTML. У наведеному нижче фрагменті коду пояснюється, як використовувати XPath Query для веб-скрапінгу в C#:
// Підготуйте HTML код
var code = @"
<div class='happy'>
<div>
<span>Hello!</span>
</div>
</div>
<p class='happy'>
<span>World</span>
</p>
";
// Ініціалізація документа на основі підготовленого коду
using (var document = new Aspose.Html.HTMLDocument(code, "."))
{
// Тут ми оцінюємо вираз XPath, де ми вибираємо всі дочірні елементи SPAN з елементів, атрибут 'class' яких дорівнює 'happy':
var result = document.Evaluate("//*[@class='happy']//span",
document,
null,
Aspose.Html.Dom.XPath.XPathResultType.Any,
null);
// Ітерація по отриманих вузлах
for (Aspose.Html.Dom.Node node; (node = result.IterateNext()) != null;)
{
System.Console.WriteLine(node.TextContent);
// вихід: Привіт
// вихід: Світ!
}
}
Використовуйте CSS Selector для веб-скрапінгу в C#
Ви можете створити шаблон пошуку для відповідності елементів у дереві документа на основі синтаксису селекторів CSS. Наведений нижче фрагмент коду пояснює, як виконати веб-скрапінг за допомогою CSS Selector у C#:
// Підготуйте HTML код
var code = @"
<div class='happy'>
<div>
<span>Hello</span>
</div>
</div>
<p class='happy'>
<span>World!</span>
</p>
";
// Ініціалізація документа на основі підготовленого коду
using (var document = new Aspose.Html.HTMLDocument(code, "."))
{
// Тут ми створюємо селектор CSS, який вилучає всі елементи, атрибут 'class' яких дорівнює 'happy', і їхні дочірні елементи SPAN
var elements = document.QuerySelectorAll(".happy span");
// Перегляньте отриманий список елементів
foreach (Aspose.Html.HTMLElement element in elements)
{
System.Console.WriteLine(element.InnerHTML);
// вихід: Привіт
// вихід: Світ!
}
}
Отримайте безкоштовну ліцензію
Ви можете подати запит на безкоштовну тимчасову ліцензію, щоб оцінити API у повній мірі.
Висновок
У цій статті ви дізналися про бібліотеку веб-скребків C# Aspose.HTML for .NET, яка містить кілька методів створення веб-скребків у C#. У ньому розглядаються навігація HTML, запит XPath, а також методи вибору CSS для досягнення ваших вимог. Однак, якщо вам потрібно обговорити будь-які ваші проблеми чи запитання, напишіть нам на форум.