Парсер выдачи Яндекса посредством XML, который позволяет получить метатеги сайтов (title, description, keywords) по ссылкам из выдачи. Создавался для личных целей - анализа конкурентов и автоматической генерации мета тегов.
Вы должны быть зарегистрированы в Яндексе.
- Переходим по ссылке https://xml.yandex.ru/settings/
- Указываем в настройках свой IP
- Из ссылки вида https://yandex.ru/search/xml?user= сохраняем два параметра user и key
- Копируем репозиторий себе на ПК и открываем проект в IntelliJ IDEA или любой другой IDE на ваш выбор
- Устанавливаем зависимости в gradle
- Пользуемся
В файле Program.kt в функции main указываем 2 параметра, наши сохраненные user и key. Затем создаем переменную, в которой будут хранится наши ссылки из выдачи. Указываем текстоый запрос и номер страницы (начинается с нуля).
Пример:
val sites = GetMetaData().getLinks(user, key, "как скачать windows 10", 0)
Объявляем переменную, типа StringBulider или просто строковую
val sb = StringBuilder()
Затем проходимся по полученному массиву, получаем мета-теги и записываем их в файл
sites.forEach {
val title = GetMetaData().getTitle(it)
val description = GetMetaData().getDescription(it)
val keywords = GetMetaData().getKeywords(it)
sb.append(it+"\n")
sb.append(title+"\n")
sb.append(description+"\n")
sb.append(keywords)
sb.append("\n\n")
}
FileDataHelper().writeContent("D:/links.txt",sb.toString())
Если Вам не важна последовательность выполнения, то можно существенно ускорить процесс, вызвав метод parallelStream() перед forEach
sites.parallelstream().forEach {
val title = GetMetaData().getTitle(it)
val description = GetMetaData().getDescription(it)
val keywords = GetMetaData().getKeywords(it)
sb.append(it+"\n")
sb.append(title+"\n")
sb.append(description+"\n")
sb.append(keywords)
sb.append("\n\n")
}
FileDataHelper().writeContent("D:/links.txt",sb.toString())
- getLinks(user: String, key: String, query: String, page: Int) принимает 4 параметра: имя пользователя Яндекс, ключ, запрос, и номер страницы и возвращает массив ссылок из выдачи (кроме ссылок на объявления Я.Директ)
- getTitle(url: String) - принимает ссылку на сайт и возвращает его тег <Title>
- getDescription(url: String) - принимает ссылку на сайт и возвращает его тег
- getKeywords(url: String) - принимает ссылку на сайт и возвращает еготег
- getContent(source: String) - принимает путь к файлу и считывает данные из него
- writeContent(source: String, content: String) - принимает путь к файлу и записывает в него содержимое (при последующих вызовах добавляет содержимое в файл)
- getData(url: String) - принимает ссылку и скачивает содержимое в виде текста