그래서 저는 jSoup을 사용하여 일부 메타 데이터에 대한 웹 사이트를 구문 분석했습니다. 문제는 내가 필요로하는 중요한 메타 데이터 중 일부가 태그 내에 있지 않고 가져 오는 방법을 모른다는 것입니다.
다음은 내 URL에서 가져와야하는 데이터의 예입니다.
<div class="newclass ">
<div>
<p>
<strong>Arist:</strong> Picasso Biggie <em>|</em>
<strong>Released:</strong> 3 years ago <em>|</em>
<strong>Album:</strong> Picasso Biggie: The Big OneUp <em>|</em>
<strong>Producer:</strong> Various <em>|</em>
<strong>Featuring:</strong> Mount Kimbie <em>|</em>
</p>
</div>
</div>
여기 html에서 찾고있는 것은 아티스트 "Picasso Biggie", "3 년 전"발매 연도, 앨범 "Picasso Biggie : The Big OneUp"등과 같은 것입니다. jSoup과 함께 노드를 사용하는 것이 좋지만 몇 가지 예만 찾을 수 있으며 특히 찾고있는 작업을 수행하도록 jSoup를 얻는 방법을 알 수 없습니다.
이것은 내가 시도한 코드이며 아무것도 반환하지 않습니다.
Document doc = Jsoup.connect(URL).get;
Elements dakss1 = doc.select(".newclass ");
for(Element dakss : rayz1) {
TextNode quill = (TextNode) rayz1.nextSibling().childNode(0);
System.out.println("" + quill);
}
업데이트 : Shaowei Ling 의 답변 은 태그 외부의 모든 텍스트를 가져 오는 데 적합하지만 특정 노드 만 지정하는 방법이 있는지 궁금합니다. 그래서 특정 단어 만 얻을 수 있습니다. 예를 들어 얻는 대신
Picasso Biggie
3 years ago
Picasso Biggie: The Big OneUp
Various
Mount Kimbie
나는 단지 얻는다 :
3 years ago
앨범이 발매 된 해만 있으면 되나요?
업데이트 # 2 : 좋아, 위와 동일한 HTML 구조로 여러 항목을 구문 분석하는 두 번째 문제를 해결하기 위해 jSoup에 대한 선택기 쿼리에 원하는 특정 요소를 포함했습니다. 예를 들어 내가 Picasso Biggies 앨범의 모든 출시 날짜를 알고 싶다면. 이것은 내가 사용한 코드입니다.
Document doc = Jsoup.connect(URL).get;
Elements dakss1 = doc.select(".newclass p strong:contains(Released) ");
for(Element dakss : dakss1) {
Node nodeWithReleaseDates =(Node) dakss.nextSibling();;
System.out.println("" + nodeWithReleaseDates);
}
이것은 계속해서 다음과 같이 Picasso Biggie의 다양한 앨범에 대해 내가 원하는 모든 릴리스 날짜를 반환했습니다.
3 years ago
2 years ago
7 months ago
1 month ago
귀하의 질문에는 정의되지 않은 변수가 rayz1
있습니다.
예제 코드가 도움이 될 수 있습니다. 나는 그것을 실행했다, 그것은 작동한다.
String html =
"<div class=\"newclass \">\n"
+ " <div>\n"
+ " <p> \n"
+ " <strong>Arist:</strong> Picasso Biggie <em>|</em>\n"
+ " <strong>Released:</strong> 3 years ago <em>|</em>\n"
+ " <strong>Album:</strong> Picasso Biggie: The Big OneUp <em>|</em> \n"
+ " <strong>Producer:</strong> Various <em>|</em> \n"
+ " <strong>Featuring:</strong> Mount Kimbie <em>|</em> \n"
+ " </p>\n"
+ " </div>\n"
+ "</div>";
Document doc = Jsoup.parse(html);
Elements dakss1 = doc.select("div p strong");
for (Node dakss : dakss1) {
System.out.println(dakss.nextSibling().toString().replace(" ", "").trim());
}
결과는 다음과 같습니다.
Picasso Biggie 3 년 전 Picasso Biggie : The Big OneUp Various Mount Kimbie
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다