jsoup를 이용한 크롤링중 파싱에 관한 질문(안드로이드)

조회수 1163회

안드로이드 어플을 만들어보려는 초보 개발자입니다. jsoup를 이용한 크롤리중 파싱에 궁금한점이 있습니다.

이미지

select 메소드를 이용해 다음 코드를 작성했습니다. Elements elements = doc.select("tr[tabinex=3]");
그러면 스크린샷에서 보이듯 안드로이드 화면에 모든 나라의 가격이 전부 다 나옵니다.

제가 원하는것은 파란색 동그라미 친 것처럼 특정한 한 나라의 요소만 파싱하고 싶습니다. 이럴 경우에는 select메소드안에 인자를 어떤식으로 넣어줘야 하는건가요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    자바코드를 테스트 할 때는 jshell 이나 groovy(groovysh) 를 추천합니다. 아래 코드를 참고하시기 바라구요.

    원하는 답은 table tr[tabindex=3] td:eq(1) 같이 조회하면 됩니다.

    groovy:000> @Grab(group='org.jsoup', module='jsoup', version='1.11.3')
    groovy:001> go
    ===> null
    groovy:000> import org.jsoup.*
    ===> org.jsoup.*
    groovy:000> import org.jsoup.select.*
    ===> org.jsoup.*, org.jsoup.select.*
    groovy:000> doc = Jsoup.connect("https://eshop-prices.com/").get()
    groovy:000> doc.select("table tr[tabindex=3]")
    ===> [<tr data-table-searchable="" tabindex="3">
     <th><a href="https://eshop-prices.com/games/379-1-2-switch">1-2-Switch</a></th>
     <td>$69.95</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>$68.24</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>1 249,00 Kč</td>
     <td>399,00 kr.</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td class="l">¥5,378</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td class="h">$1,399.00</td>
     <td>€49,99</td>
     <td>$79.95</td>
     <td>429,00 kr</td>
     <td>209,80 zł</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>3.749,00 ₽</td>
     <td>€49,99</td>
     <td>€49,99</td>
     <td>R779.00</td>
     <td>€49,99</td>
     <td>449,00 kr</td>
     <td>CHF64.90</td>
     <td>£39.99</td>
     <td>$49.99</td>
    </tr>]
    groovy:000> doc.select("table tr[tabindex=3] td")
    ===> [<td>$69.95</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td>$68.24</td>, <td>€49,99</td>, <td>€49,99</td>, <td>1 249,00 Kč</td>, <td>399,00 kr.</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td class="l">¥5,378</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td>€49,99</td>, <td class="h">$1,399.00</td>, <td>€49,99</td>, <td>$79.95</td>, <td>429,00 kr</td>, <td>209,80 zł</td>, <td>€49,99</td>, <td>€49,99</td>, <td>3.749,00 ₽</td>, <td>€49,99</td>, <td>€49,99</td>, <td>R779.00</td>, <td>€49,99</td>, <td>449,00 kr</td>, <td>CHF64.90</td>, <td>£39.99</td>, <td>$49.99</td>]
    groovy:000> doc.select("table tr[tabindex=3] td:eq(1)")
    ===> [<td>$69.95</td>]
    groovy:000> doc.select("table tr[tabindex=3] td:eq(2)")
    ===> [<td>€49,99</td>]
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)