2017-10-24 1 views
-1

안녕하세요, JSOUP을 사용하여 웹 사이트를 긁어 내고 키 - 값 쌍으로 결과를 얻으려면 누군가 나에게 제안 할 수 있어야합니다.JSOUP 데이터를 긁어 내기

package com.jaysons; 
import java.io.IOException; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

public class ScrapeBody { 
public static void main(String[] args) throws IOException{ 
String url = "https://www.cpsc.gov/Recalls?field_rc_date_value%5Bmin%5D&field_rc_date_value%5Bmax%5D&field_rc_heading_value=&field_rc_hazard_description_value=&field_rc_manufactured_in_value=&field_rc_manufacturers_value=&field_rc_number_value="; 
Document doc = Jsoup.connect(url).get(); 

Elements content = doc.select("div.views-field views-field-php");  
doc = Jsoup.parse(content.html().replaceAll("</div>", "</div><span>") 
.replaceAll("<div", "</span><div")); 
Elements labels = doc.select("div.remedy"); 
for (Element label : labels) { 
System.out.println(String.format("%s %s", label.text().trim(),                      
label.nextElementSibling().text())); 
} 
}   
} 

내가
날짜와 같은 키 값 쌍의 출력이 필요합니다 :
내가 srape 필요가있는 URL을 내가 작성한 코드는 https://www.cpsc.gov/Recalls?field_rc_date_value%5Bmin%5D&field_rc_date_value%5Bmax%5D&field_rc_heading_value=&field_rc_hazard_description_value=&field_rc_manufactured_in_value=&field_rc_manufacturers_value=&field_rc_number_value=

입니다 2017년 10월 20일
치료 :
단위 :
웹 사이트 : http://www.bosch-home.com/us
전화 : (888) 965-5813

친절하게 내가 어디에서 실수했는지 알려주십시오

+0

그래서 지금까지 어떤 시도를 했습니까? 그리고 당신의 질문은 무엇입니까? StackOverflow는 코드 작성 서비스가 아닙니다. 어디서부터 시작해야할지 궁금하다면 프로젝트 문서 (예 : [요리 책] (https://jsoup.org/cookbook/))를 확인하십시오. – ventiseis

+0

나는 많은 버전을 시도했지만 아무것도 작동하지 않는 것처럼 보였습니다. 그래서 도움이 필요했습니다 - ventiseis – vyas

+0

당신이 시도한 것을 보여주십시오. – sina

답변

0

content 변수의 값을 재 할당하고 다시 구문 분석 할 필요가 없습니다.

Elements content = doc.select("div.views-field >span"); 
for (Element viewField : content) { 
    /* 
     each viewField corresponds to one 
     <div class="views-field views-field-php"> 
      <span class="field-content"> 
      <a href="/Recalls/2018/BSH-Home-Appliances-amplía-retiro-del-mercado-de-lavavajillas"> 
      <div class="date"> 
       October 20, 2017 
      </div> 
      ... 
      </span> 
     </div> 
    */ 
    Elements divs = viewField.getElementsByTag("div"); 
    for (Element div : divs) { 
     String className = div.className(); 
     if (className.equals("date")) { 
     // store and extract date 
     } else if (className.equals("...")) { 
     // do something else 
     } // else... 
    } 
} 

뿐만 아니라 당신이 태그에 의해 하위 요소를 선택뿐만 아니라 이름으로, 일부 속성 등을하여 더 많은 정보를 원하시면 공식 문서를 확인 할 수 있습니다 https://jsoup.org/cookbook/extracting-data/dom-navigation

면책 조항 : 나는 지금의 코드를 테스트 할 수 있습니다.

+0

이 코드는 잘 실행되지 않았습니다. 또한 키 값 쌍으로 출력해야하지만 여기서는 작동하지 않습니다. – vyas

+0

두 번째 (내부) 루프 안에 키 값 쌍을 만들 수 있습니다. 'className'이'date'와 같으면 날짜에 대한 키 - 값 - 쌍을 만들고,'remedy'와 같으면 치료 정보를 추출하고 그 데이터에 대한 키 - 값 쌍을 만듭니다.이 코드는 귀하의 문제에 대한 완벽한 해결책은 아니지만 귀하를 올바른 방향으로 인도하기에 충분해야합니다. – sina

+0

yupppp 도움을 주셔서 감사합니다. 잘 됐네요. 괜찮습니다. @sina – vyas

관련 문제