Проблема при парсинге сайта на Kotlin для приложения под андроид
Код парсера:
fun getAllManga(url: String) {
val doc: Document = Jsoup
.connect(url)
.get()
val mangaList: Elements = doc
.select("div[class=tile col-sm-6 ]")
val mangaSaleList: Elements = doc
.select("div[class=tile col-sm-6 for-sale]")
val mangaPages = doc
.select("span[class=pagination]")
.select("a[class=nextLink]")
.attr("href")
for (i in 0 until mangaSaleList.size) {
val nameManga = mangaSaleList
.eq(i)
.select("div[class=desc]")
.select("h3")
.select("a")
.text()
val urlImage = mangaSaleList
.eq(i)
.select("div[class=img]")
.select("a")
.select("img")
.attr("data-original")
val manga = Manga(
name = nameManga,
imgUrl = urlImage
)
mMangaViewModel.addAllManga(manga)
}
for (i in 0 until mangaList.size) {
val nameManga = mangaList
.eq(i)
.select("div[class=desc]")
.select("h3")
.select("a")
.text()
val urlImage = mangaList
.eq(i)
.select("div[class=img]")
.select("a")
.select("img")
.attr("data-original")
val manga = Manga(
name = nameManga,
imgUrl = urlImage
)
mMangaViewModel.addAllManga(manga)
}
if (mangaPages.isNotEmpty()) {
getAllManga("$BASE_URL$mangaPages")
}
}
fun getNewManga(url: String) {
val doc: Document = Jsoup
.connect(url)
.get()
val mangaList: Elements = doc
.select("table[class=table table-hover newChapters ]")
.select("tbody")
.select("tr")
val mangaPages = doc
.select("table[class=table table-hover newChapters ]")
.select("tfoot")
.select("span[class=pagination]")
.select("a[class=nextLink]")
.attr("href")
for (i in 0 until mangaList.size) {
val check = mangaList
.eq(i)
.select("sup")
if (check.isNotEmpty()) {
val nameManga = mangaList
.eq(i)
.select("a")
.text()
val urlImage = mangaList
.eq(i)
.select("span")
.attr("rel")
val manga = NewManga(
name = nameManga,
imgUrl = urlImage
)
mMangaViewModel.addNewManga(manga)
} else {
val nameUrl = mangaList
.eq(i)
.select("a")
.attr("href")
val page: Document = Jsoup
.connect("$BASE_URL$nameUrl")
.get()
val nameManga = page
.getElementById("mangaBox")
.select("h1")
.select("a")
.text()
val urlImage = mangaList
.eq(i)
.select("span")
.attr("rel")
val manga = NewManga(
name = nameManga,
imgUrl = urlImage
)
mMangaViewModel.addNewManga(manga)
}
}
if (mangaPages.isNotEmpty()) {
getNewManga("$BASE_URL$mangaPages")
}
}
Парсер работает минуту-две а после приложение вылетает с ошибкой 429 - слишком много запросов. Пробовал слипать, но слип в 5 секунд это уже долго да и все равно даже со слипом выдает 429. Заголовки тоже пробовал передавать, смотрел через браузер какие передают, такие и передавал, юзер агент в том числе. Прокси не вариант, так как бесплатные либо не работают либо очень медленные, а в платных не вижу смысла, так как приложение будет бесплатным. Есть какие-нибудь советы как избавиться от 429?