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을 반환합니다.
아무튼?
좋아, 문제를 발견했습니다. select() 메소드는 "id"속성으로 찾습니다. 두 개의 웹 페이지 (결과를 반환하는 웹 페이지)는 "id"로 식별됩니다. 다른 두 개는 이름으로 식별되며 그 이유는 찾을 수 없기 때문입니다. –
답변을 덧글로 게시하지 않습니다. – user11153