2014-09-04 2 views
0

제목이 이상합니다. 알아요. 더 잘 설명하는 법을 모르겠습니다.jsoup를 사용하여 특정 시작과 함께 클래스가있는 html을 구문 분석하십시오.

XML을 구문 분석하기 위해 jsoup를 사용하고 있습니다.

Elements dan = doc.select("table.ednevnik-seznam_ur_teden tbody tr:eq(0) th:eq("+i+") div"); 

"ednevnik-seznam_ur_teden"클래스 이름이 그래서 구문 분석하고 요소 ...

을하지만 지금은 웹 사이트 administator 매일이 있다는 것을 있도록 변경 : 지금까지 그것을 어떻게입니다 다른 클래스 이름. 그것은 여전히 ​​"ednevnik-seznam_ur_teden"으로 시작하지만 거기에 뭔가가 추가되었습니다.

예 : "123 ednevnik-seznam_ur_teden"

단지 클래스 이름의 특정 시작을 찾아 다음 구문 분석 할 수 있습니까? 예를 들어, "ednevnik-seznam"으로 시작하는 calss 이름은 구문 분석합니다.

SQL에서 %와 같은 모든 것을 대체 할 수있는 것.

편집 : 이것은 내가 코드를 변경하고 그것은 여전히 ​​작동하지 않습니다 방법입니다

Elements dan = doc.select("table[class^=ednevnik-seznam_ur_teden] tbody tr:eq(0) th:eq("+i+") div"); 

심층 설명 : 나는 기꺼이 HTML 코드 그러나 나는를 게시 할 것

그것에 액세스 할 수 없습니다. 그리고 요소를 검사하여 거기에서 복사/붙여 넣기하면 코드가 엉망이됩니다. 그래서 이것은 HTML을 파싱 할 웹 사이트입니다. https://www.easistent.com/urniki/cc45c5d0d303f954588402a186f5cdba5edb51d6/razredi/28396

이것은 지금까지 의 코드입니다.

for (int i = 1; i <= 5; i++) 
       { 
        Elements dan = doc.select("table[class^=ednevnik-seznam_ur_teden] tbody tr:eq(0) th:eq("+i+") div"); 
        for (int b = 1; b <= 11; b++) 
        { 
         Elements predmeti = doc.select("table[class^=ednevnik-seznam_ur_teden] tbody tr:eq("+b+") td:eq("+predmet+") td[class=text14 bold]"); 
         Elements ucilnice = doc.select("table[class^=ednevnik-seznam_ur_teden] tbody tr:eq("+b+") td:eq("+predmet+") div[class=text11]"); 
... 

그래서 기본적으로 내가 이것으로 무엇을, 내가 특별히 모든 테이블 요소를 구문 분석합니다.

웹 사이트에서 변경 될 때까지 작동했습니다. 이제 테이블 열 요소는 항상 동일한 클래스를 가지지 않습니다. 그들은 항상 "ednevnik-seznam_ur_teden"이었지만 지금은 그들이 어느 날과 일치 하는지를 변경합니다. 현재 강조 표시된 열의 클래스 이름이 다릅니다.

이제이 HTML 파서 코드는 강조 표시된 열을 제외한 모든 것을 구문 분석합니다.

답변

0

"ednevnik-seznam_ur_teden"으로 시작하는 항목을 선택하려면 CSS 선택기를 사용할 수 있어야합니다. 귀하의 경우에는

, 당신의 선택은 다음과 같습니다이 ednevnik-seznam_ur_teden로 시작하는 클래스 이름을 가진 모든 테이블을 선택 말한다

Elements dan = doc.select("table[class^=ednevnik-seznam_ur_teden]");

.

참고로, jsoup Selector 문서는 매우 유용한 예제를 제공합니다.

+0

답변 해 주셔서 감사합니다.하지만 슬프게도 작동하지 않습니다. 그것은 ** 정확히 ** "ednevnik-seznamm_ur_teden"이 아닌 클래스를 구문 분석하지 않습니다. 코드를 어떻게 변경했는지 확인하려면 편집을 확인하십시오. – Guy

+0

선택의'tbody tr : eq (0) th : eq ("+ i +") div 부분을 제거 할 수 있습니다. 첫 번째 부분은 클래스 이름으로 시작하는 모든 테이블을 가져와야합니다. –

+0

하지만 테이블의 특정 요소를 구문 분석하려면 해당 부분이 필요합니다. 내가 여기서 뭔가를 놓치고 있니? 더 잘 이해할 수있는 전체 코드를 제공해야합니까? – Guy

관련 문제