반응형
앞서 사용하는 방법을 설명했고, 이제는 실전이다.
무한도전의 회차 정보를 가져오는 내용을 해보았고, 페이지에서 전체 내가 원하는 회차 프로그램 정보를 가져오는 방법을 설명하겠다.
일단 무한도전의 회차 정보를 가져오기 위해서 확인해본 결과 아래와 같은 구조를 가지고 있었다.
<div class="brcs_thumb"> .... </div>는 이미지의 URL을 담고 있었고,
<div class="brcs_detail" id="brcs_detail"> ... </div> 에는 회차정보인 택스트 정보를 담고 있었다.
안에를 자세하게 살펴보면
소스코드
Elements image = doc.select("div.brcs_thumb");
for (Element e : image) {
// System.out.println(e);
for (Element k : e.children()) {
// System.out.println(k);
for (Element y : k.children()) {
// System.out.println(y);
Elements i = y.getElementsByTag("img");
for (Element j : i) {
System.out.println(j.data() +", " + j.tag() +", " +j.attributes()+ ", " + j.attr("src"));
System.out.println(j.attr("src"));
}
}
}
}
이 부분에서는 <img src의 내용이 필요했고, 무한도전 이미지
소스코드
Elements contents = doc.select("dl.nomar");
for (Element e : contents) {
Elements children = e.children();
Elements k = e.select("dt.dss_h_episode_intro dd a href");
for (Element e2 : k) {
System.out.println("child " + e2.tagName() + ", " + e2.className() + ", " + e2.text());
}
for (Element e1 : children) {
Elements links = e1.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
// https://search.naver.com/search.naver
System.out.println(linkHref + ", " + linkText);
}
System.out.println("child " + e1.tagName() + ", " + e1.className() + ", " + e1.text());
}
System.out.println(e.tagName() + ", " + e.className() + ", " + e.text());
}
public class Application { public static void main(String[] args) throws IOException { String url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&ie=utf8&query=무한도전+20160423"; Document doc = Jsoup.connect(url) .header("content-type", "multipart/form-data; boundary=---011000010111000001101001") .header("authorization", "Basic ZmJfMTY2MTUzMDc0NzQ2MTk5NDox").header("cache-control", "no-cache") .get(); // thumb image 가져오기 Elements brcsThumbElements = doc.select("div.brcs_thumb"); // System.out.println(brcsThumbElements); System.out.println(brcsThumbElements.select("a").get(0).getElementsByTag("img").attr("src")); // broadcast info 가져오기 Elements brcsDetailElements = doc.select("div.brcs_detail"); // System.out.println(brcsDetailElements); Elements dlNomarElements = brcsDetailElements.select("dl.nomar"); Elements infoElements = dlNomarElements.get(0).children(); ArrayList
infos = new ArrayList<>(); String[] row = new String[2]; for (Element infoElement : infoElements) { if (infoElement.tagName().equals("dt")) { row = new String[2]; row[0] = infoElement.text(); } else if (infoElement.tagName().equals("dd")) { row[1] = infoElement.text(); infos.add(row); } } for (String[] r : infos) { System.out.println(r[0] + " : " + r[1]); } } }
반응형
'Programming > Android' 카테고리의 다른 글
[Android] 안드로이드 웨어러블(Wearable) adb logcat 확인 (0) | 2016.05.23 |
---|---|
[Android] 안드로이드 웹페이지 파싱하기 - jsoup 이용하기 (9) | 2016.04.26 |
[Android] 안드로이드 Intent를 이용한 파일열기 (0) | 2016.04.24 |
[Android] 파일 삭제하기 (0) | 2016.04.24 |
[Android] 안드로이드 파일 목록 가져오기 (3) | 2016.04.24 |