2013-12-17 1 views
0

안녕하세요 저는 클라우드 컴퓨팅에서 아마존이라는 프로젝트를 진행하고 있습니다. 아마존에서 사용자 위시리스트를 얻는 코드 부분. 권한 제한이 있기 때문에 내가 한 일은 소원 목록 URL이 주어진 전체 페이지 소스를 추출한 것입니다. 이 쉬웠하고 올바르게 그 위시리스트에 자신의 항목 ID 모든 제품을 나열 스팬 html 태그 용 패턴 컴파일러

Pattern p = Pattern.compile("/dp/(\\w+)/"); 
        Matcher matcher = p.matcher(content); 

처럼 패턴에 사용되는 항목 ID를 추출하려면 컴파일합니다. 각 가격도 필요합니다. 페이지 소스에 따라 가격이 나는이 하나의 패턴을 작성해야하고 모든 혼란 스러워요 및 stuck.I는 정규식 표현 빨아

<span class="a-size-base a-color-price a-text-bold"> 
         $7.19 
        </span> 

입니다. 누구든지 제발 도와 줄 수 있어요. href에 대한 온라인 참조를 보았지만 나에게 도움이 될 것이라고 생각하지 않습니다.

dkatzel에게 감사드립니다.이 도구는 Jsoup입니다. 나는 Online Jsoup Try에서 온라인 변환을 시도했는데 CSS Query div를 할 때 필요한 출력을 얻었다. 하지만 어떻게 내 자바 프로그램에서 하드 코딩합니까. 나는 jsoup 항아리가있다.

+2

http://jsoup.org/와 같은 HTML 구문 분석 라이브러리를 사용하여이 모든 작업을 수행하는 것이 좋습니다. (당신이 학교 일을 위해 그것을 스스로 분석 할 필요가 없다면) – dkatzel

+0

나는 그것을 직접 파싱 할 필요가 없다. 내 주요 프로젝트는 완전히 다릅니다. –

+2

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – GriffeyDog

답변

1

단순한 표현식이 작동하지 않습니까?

\\$\\d+(?:\\.\\d+) 

\\$는 문자 그대로 $ 일치합니다.

\\d+은 자릿수와 일치합니다.

(?:\\.\\d+)은 잠재적 십진수와 일치합니다.

가 전체 일치 당신은 내가 당신이 달러 기호를 필요로하지 않는 한, 당신은 캡처 그룹을 사용할 수 있습니다와 lookbehind을 첫 번째 그룹을 (즉, \\$(\\d+(?:\\.\\d+))) 또는 추측 무엇을 찾고 있는지 (즉, (?<=\\$)\\d+(?:\\.\\d+)를)

+0

제가'List price = new ArrayList (); \t \t \t \t \t 패턴 pr = Pattern.compile ("\\ $ \\ d + (? : \\. \\ d +)"); \t \t \t \t \t matcher priceMatcher = pr.matcher (content); \t \t \t \t \t while (priceMatcher.발견()) { \t \t \t \t \t \t 경우) \t \t \t \t \t \t \t price.add (priceMatcher.group (1)) (price.contains (priceMatcher.group (1)!); \t \t \t \t \t \t} \t \t \t \t \t \t \t \t \t에서 System.out.println ("반복 페치 가격"+ 카운트); (문자열 S : 가격)에 대한 \t \t \t \t \t { \t \t \t \t \t \t에서 System.out.println (들); \t \t \t \t \t ** ** 전체적으로 일치하므로'.group (0)'을 사용하십시오. ** –

+0

@sa_nyc'.group (0)'을 사용하십시오. – Jerry

+0

전체 태그와 일치 시키려면 다음을 사용하십시오. ' \\ s * (\\ $ \\ d + (? : \\. \\ d +)) \\ s *'그리고 캡쳐 그룹이 있기 때문에'.group (1)'을 사용하십시오. – Jerry

3

Jsoup가 사용 된 다른 대답. 컴파일, 다음과 같은 수입을 추가 할 때

Element e = doc.select("span.a-size-base").first(); 

프로젝트에 jsoup-1.x.x.jar을 포함하거나.

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element;