2014-07-20 4 views
0

CDC 웹 페이지에서 질병에 대한 데이터를 얻기 위해 작은 파서를 사용하고 있습니다. 나는 jsoup를 사용하고 있으며, 이것을 제외하고는 모든 것이 정상적으로 작동하는 것처럼 보입니다.jsoup로 HTML을 구문 분석 할 때 예상 결과가 검색되지 않았습니다.

필자가 원하는 데이터가 들어있는 "섹션"에 대한 링크를 얻기 위해 구문 분석 한 네 개의 예제 URL이 있습니다 (코드 참조).

각 페이지의 코드가 표시되면 링크가 존재하는지 확인하십시오.

이 링크 (내부 링크)를 가져 와서이 값으로 4 개의 페이지 중 2 개에서 작동하는 "요소"개체를 검색하려고 시도한 후 이유를 알지 못합니다. 예상대로 (

---- Test ----- 
URL: http://www.cdc.gov/HAI/organisms/bCepacia.html 
Element: #a3 
Size: 1 
    ---- Test ----- 
    URL: http://www.cdc.gov/meningitis/bacterial.html 
    Element: #symptoms 
Size: 0 
    ---- Test ----- 
URL: http://www.cdc.gov/nczved/divisions/dfbmd/diseases/botulism/ 
Element: #symptoms 
Size: 1 
---- Test ----- 
URL: http://www.cdc.gov/getsmart/antibiotic-use/URI/bronchitis.html 
Element: c 
Size: 0 

당신이 볼 수있는 것처럼, 페이지의 두 가지의 크기가 1 :

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.select.Elements; 

public class MainJSoupTest { 

public MainJSoupTest() { 
    try { 
     test("http://www.cdc.gov/HAI/organisms/bCepacia.html", "#a3"); 
     test("http://www.cdc.gov/meningitis/bacterial.html", "#symptoms"); 
     test("http://www.cdc.gov/nczved/divisions/dfbmd/diseases/botulism/", "#symptoms"); 
     test("http://www.cdc.gov/getsmart/antibiotic-use/URI/bronchitis.html", "c"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

private void test(String url, String element) throws Exception { 
    Document doc = Jsoup.connect(url).get(); 
    Elements els = doc.select(element); 
    System.out.println(" ---- Test -----"); 
    System.out.println("URL: " + url); 
    System.out.println("Element: " + element); 
    System.out.println("Size: " + els.size()); 
} 

public static void main(String[] args) { 
    new MainJSoupTest(); 
} 

}

그리고 출력 :

여기 내 코드입니다 내부 링크를 나타내는 요소가 있음). 그러나 나머지 두 개는 0을 반환합니다.

아무튼?

+0

좋아, 문제를 발견했습니다. select() 메소드는 "id"속성으로 찾습니다. 두 개의 웹 페이지 (결과를 반환하는 웹 페이지)는 "id"로 식별됩니다. 다른 두 개는 이름으로 식별되며 그 이유는 찾을 수 없기 때문입니다. –

+2

답변을 덧글로 게시하지 않습니다. – user11153

답변

0
Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); 
Elements newsHeadlines = doc.select("#mp-itn b a"); 

입력 요소 이름 만 입력하면됩니다. '요소'와 다릅니다.

관련 문제