Я написал парсер с использованием 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. Правильно ли сделан парсер или можно его сделать более эффективным?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости