반응형
오늘 이야기는 저 이미지와 같이 읽어 정보를 이용해서 해당 게시 홈페이지의 글들 중에서 최신 글을 찾아 열어 볼 수 있는 기능 구현 이야기를 이어 보겠습니다.
먼저 gradle 파일에 jsoup 사용을 위해 추가합니다. python에서는 beautifulsoup 같이 html 문서의 파싱을 등을 할 수 있습니다.
// jsoup
implementation 'org.jsoup:jsoup:1.16.1'
url 정보를 받아 왔다면 이제 그 페이지를 열어서 받아온 html 문서의 내용에서 최신글을 번호를 확인해 볼 수 있는 기능 구현 코드를 보겠습니다.
var newUrl = "여기에 다가 게시자의 티스토리 블로그 URL 을 넣어 줍니다."
CoroutineScope(Dispatchers.IO).launch {
try {
val doc = Jsoup.connect(url).get()
// val document = Jsoup.parse(doc.html().trimIndent())
var detailTitleLinks = doc.select("div.detail a.title.link.link-primary")
if (detailTitleLinks.isEmpty()) {
detailTitleLinks = doc.select("div.article-content a.link-article")
}
if (detailTitleLinks.isEmpty()) {
detailTitleLinks = doc.select("div.list_content a.thumbnail_post")
}
if (detailTitleLinks.isEmpty()) {
detailTitleLinks = doc.select("div.post-item")
}
if (detailTitleLinks.isEmpty()) {
detailTitleLinks = doc.select("div.posts li a")
}
if (detailTitleLinks.isEmpty()) {
Log.e("", "doc = $doc")
}
for (link in detailTitleLinks) {
var detailHref = link.attr("href")
if (detailHref.isEmpty()) {
detailHref = link.selectFirst("a")?.attr("href").toString()
}
Log.e("", "Detail Href: $detailHref")
if (detailHref.isNotBlank()) {
newUrl = "$url/m$detailHref"
break
}
}
Log.e("", "newUrl = $newUrl")
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(newUrl))
startActivity(intent)
} catch (e : Exception) {
Log.e("", "error = ${e.localizedMessage}")
}
}
위 예시 코드와 같은 함수를 하나 만들어 두면 됩니다.그럼 최신글 번호를 찾아서 바로 열어 줍니다. 이렇게 구분을 여러 가지로 해 보는 것은 티스토리 페이지가 스킨에 따라 달라지는 부분들이 있기 때문입니다.
이제 다음으로 넘어가 봐야 할 텐데... 잘 될지는 모르겠습니다.
반응형
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 : jetpack compose 1.5 가 안정화 되었습니다. (인터넷 펌) (10) | 2023.08.31 |
---|---|
안드로이드 앱 만들기 : Azure 플랫폼 - Microsoft Azure 안드로이드 에서도 가능(?) (102) | 2023.08.30 |
안드로이드 앱 만들기 : 스크래핑 도전기 ( 새로운 댓글 목록 찾아서 열어보기 ) (70) | 2023.08.24 |
안드로이드 앱 만들기 : playstore 앱 서명 인증서 분실 등의 이슈 대처 방 (65) | 2023.08.23 |
안드로이드 앱 만들기 : 또 하나의 경고성 메일 (ANDROID API 수준 준수 요구사항) (10) | 2023.08.22 |