jsoup를 이용한 크롤링중 파싱에 관한 질문(안드로이드)
조회수 1163회
안드로이드 어플을 만들어보려는 초보 개발자입니다. jsoup를 이용한 크롤리중 파싱에 궁금한점이 있습니다.
select 메소드를 이용해 다음 코드를 작성했습니다.
Elements elements = doc.select("tr[tabinex=3]");
그러면 스크린샷에서 보이듯 안드로이드 화면에 모든 나라의 가격이 전부 다 나옵니다.
제가 원하는것은 파란색 동그라미 친 것처럼 특정한 한 나라의 요소만 파싱하고 싶습니다. 이럴 경우에는 select메소드안에 인자를 어떤식으로 넣어줘야 하는건가요?
1 답변
-
자바코드를 테스트 할 때는 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>]
댓글 입력