Я написал парсер с использованием AngleSharp.
Сайт для парсинга взят условно для теста.
Код
public async void Parser()
{
// *** HtmlLoader ***
HttpClient client = new HttpClient();
string currentUrl = "https://github.com/search?q=winform&type=Repositories";
var response = await client.GetAsync(currentUrl);
string source = await response.Content.ReadAsStringAsync(); // результат парсинга
// HTML парсер, который доступен из "AngleSharp".
var domParser = new HtmlParser();
// Парсим
var document = await domParser.ParseAsync(source);
// *** Парсинг ***
// var items = document.QuerySelectorAll("a").Where(item =>
// item.ClassName != null && item.ClassName.Contains("post__title_link"));
var fieldNameCollect = document.QuerySelectorAll("div.col-12.col-md-8.pr-md-3 > h3");
var fieldDescriptCollect = document.QuerySelectorAll("div.col-12.col-md-8.pr-md-3 > p");
var fieldUpdateCollect = document.QuerySelectorAll("div > p > relative-time");
var fieldLangCollect = document.QuerySelectorAll("div.text-gray.flex-auto.min-width-0");
var fieldStarCollect = document.QuerySelectorAll("div.pl-2.pl-md-0.text-right.flex-auto.min-width-0 > a");
// Колличество
int count = fieldNameCollect.Length;
// Перебор элементов
for (int i = 0; i < count; i++)
{
string fieldName = fieldNameCollect[i].TextContent;
string fieldDescript = fieldDescriptCollect[i].TextContent;
string fieldUpdate = fieldUpdateCollect[i].TextContent;
string fieldLang = fieldLangCollect[i].TextContent;
string fieldStar = fieldStarCollect[i].TextContent;
ConnectDBAccess connectDBAccess = new ConnectDBAccess(tableName, pathDB);
connectDBAccess.InsertRecord(fieldName, fieldDescript, fieldUpdate, fieldLang, fieldStar);
}
У парсера есть проблемы:
1. Текст парсится с пробелами;
2. Некоторые части страницы не парсятся;
Вопросы.
1. Я получаю проблемы из-за неправильно подобранных селекторов?
2. Как устранить проблемы?
3. Правильно ли сделан парсер или можно его сделать более эффективным?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Делаю приложение на WPF C#Хочу сделать для кнопки анимацию мерцания, через привязку к свойству
Например хочу найти строку начинающую на "лала," а заканчивающуюся на "ooo" Можно ли это как-то реализовать?
Возникла необходимость подключение сканера штрихкодов к телефону на AndroidПодключение сканера будет через USB порт
У меня есть форма, на ней панель, у этой панели есть определенный фонНа панели есть кнопка у которой в свойствах указан цвет фона - Transparent