Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

안드로이드 앱 만들기 : 스크래핑 2번째 이야기 URL 열어 보

Billcorea 2023. 8. 29. 18:03
반응형

읽어오 정보 예시

 

오늘 이야기는 저 이미지와 같이 읽어 정보를 이용해서 해당 게시 홈페이지의 글들 중에서 최신 글을 찾아 열어 볼 수 있는 기능 구현 이야기를 이어 보겠습니다.

 

먼저 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}")
            }
        }

위 예시 코드와 같은 함수를 하나 만들어 두면 됩니다.그럼 최신글 번호를 찾아서 바로 열어 줍니다.  이렇게 구분을 여러 가지로 해 보는 것은 티스토리 페이지가 스킨에 따라 달라지는 부분들이 있기 때문입니다. 

 

이제 다음으로 넘어가 봐야 할 텐데... 잘 될지는 모르겠습니다. 

 

반응형