CoderCastrov logo
CoderCastrov
HtmlAgilityPack

Автоматизация запросов по почтовому индексу с использованием HtmlAgilityPack

Автоматизация запросов по почтовому индексу с использованием HtmlAgilityPack
просмотров
2 мин чтение
#HtmlAgilityPack
Table Of Content

    Привет, ребята! Как дела?

    В этой статье я покажу вам, как автоматизировать запросы по почтовым индексам на сайте почты Бразилии с помощью библиотеки HtmlAgilityPack для .NET Core.

    Поехали!

    Примечание: чтобы не делать статью слишком длинной, я не буду объяснять пошагово, как создать консольное приложение в .NET Core.

    После создания консольного приложения, установите библиотеку HtmlAgilityPack с помощью NuGet.

    Вы можете установить ее с помощью NuGet внутри Visual Studio:

    Установленный пакет

    Теперь, когда у нас уже установлен пакет, добавим следующий код:

    Класс Program.cs с началом кода

    Краткое объяснение этого фрагмента кода:

    Сначала мы просим пользователя ввести почтовый индекс, чтобы наше приложение могло найти соответствующий адрес. Затем мы передаем введенный почтовый индекс в наш метод "BuscaEnderecoPeloCEP(cep)".

    Метод BuscaEnderecoPeloCEP

    В этой части нашего метода мы создаем три переменные типа "string": "httpResponse, html и UrlCorreio".

    Примечание: Переменная "httpResponse" будет содержать HTML, возвращенный после отправки POST-запроса на адрес почты Бразилии (хранящийся в переменной "UrlCorreio").

    Затем мы начинаем блок "Try-catch". Внутри него мы создаем переменную типа "Dictionary<string, string>" (здесь можно использовать любую коллекцию типа "Ключ-Значение").

    Мы отправим эту коллекцию как "FormUrlEncodedContent" внутри нашего "HttpRequestMessage". Чтобы сделать запрос на адрес почты Бразилии, мы создаем блок "using", в котором создаем объект типа "HttpClient". Этот объект будет отвечать за выполнение HTTP-запроса.

    Конец метода BuscaEndereco

    Здесь мы создаем объект типа "HtmlDocument" (класс из HtmlAgilityPack). Чтобы извлечь всю информацию из возвращенного HTML, мы передаем HTML в метод "LoadHtml()".

    Переменная "name" имеет тип "HtmlNodeCollection" и будет содержать всю информацию из тега "td" HTML.

    Переменные "bairro, cidade и rua" будут содержать информацию из соответствующих позиций этой коллекции ("name[1], name[2], name[0]" соответственно).

    Наконец, переменная "endereco" будет содержать объединение информации из "bairro, cidade и rua", и мы вернем эту информацию.

    Если произойдет какое-либо исключение, мы вернем сообщение об ошибке. (этот тип обработки можно значительно улучшить, но это не является основной темой здесь).

    В качестве учебного материала и для абстрагирования этих функций, в марте 2020 года я создал библиотеку .NET Standard 2.0, чтобы выполнять эти запросы. Кроме того, можно искать почтовые индексы по адресу. Если вы хотите проверить, я оставлю здесь ссылки: