2017-02-13 4 views
1

JSOUP을 사용하는 JAVA 프로그램을 만들고 있습니다. 이것이 내가 생각하는 것입니다 :JSOUP : 양식 데이터 설정

WordNet (http://wordnetweb.princeton.edu/perl/webwn)을 사용하고 싶습니다. 거기에는 사용자가 문자열을 입력 할 수있는 기본 양식이 있습니다. 문자열이 영어 사전에있는 단어인지 확인합니다. 양식을 제출하면 URL이 변경됩니다. 나는이 URL을 사용하여 얻는다. 그런 다음 단어가 아닌 경우에만 나타나는 특정 h3 태그를 확인합니다.

내 문제는 양식을 작성하여 JSOUP을 사용하여 제출하고 제출물의 URL을 가져 오는 것입니다.

는 여기에 내가 할 모르겠어요 형태

<form method="get" action="webwn" enctype="multipart/form-data" name="f"> 
Word to search for: 
<input type="text" name="s" maxlength="500"> 
<input type="submit" name="sub" value="Search WordNet"> 
<input type="hidden" name="o2" value=""> 
<input type="hidden" name="o0" value="1"> 
<input type="hidden" name="o8" value="1"> 
<input type="hidden" name="o1" value="1"> 
<input type="hidden" name="o7" value=""> 
<input type="hidden" name="o5" value=""> 
<input type="hidden" name="o9" value=""> 
<input type="hidden" name="o6" value=""> 
<input type="hidden" name="o3" value="">  
<input type="hidden" name="o4" value=""> 
<input type="hidden" name="h" value=""> 
</form> 

입니다. 이것은 내가 붙어있는 유일한 부분입니다. 그냥 URL의 엔드 포인트를 조작하여 당신이 원하는 것을 검색 할 수있는 지금까지이 시도하지만 아무것도

public static String getUrl(String search) throws IOException{ 
     String url = "http://wordnetweb.princeton.edu/perl/webwn"; 
     Document doc = Jsoup.connect(url) 
       .data("S", search) 
       .data("o2", "") 
       .data("o0", "1") 
       .data("o8", "1") 
       .data("o1", "1") 
       .data("o7", "") 
       .data("o5", "") 
       .data("o9", "") 
       .data("o6", "") 
       .data("o3", "") 
       .data("o4", "") 
       .data("h", "") 
       .post(); 
     String newURL = doc.location().toString(); 
     System.out.println(newURL); 
     return (newURL); 
} 

답변

1

하지 않습니다

http://wordnetweb.princeton.edu/perl/webwn?s= 당신이 그것을 검색하고 싶은 합치. 당신이 검색하는 단어는 단어가이 작업을 수행 할 수있는 단어가 있다면 당신은 단지 테스트하고 싶었 다음 경우 다음

/* 
* returns url of search term using jsoup 
*/ 
public static String getUrl(String search) throws IOException{ 
    String url = "http://wordnetweb.princeton.edu/perl/webwn?s="; 
    Document doc = Jsoup.connect(url + search).get(); 
    String newURL = doc.location().toString(); 
    System.out.println(newURL); 
    return (newURL); 
} 

"bill" 인 경우

/* 
* returns true if is a word 
*/ 
public static boolean isWord(String search) throws IOException{ 

    String url = "http://wordnetweb.princeton.edu/perl/webwn?s="; 
    String notAWord = "Your search did not return any results."; 

    Document doc = Jsoup.connect(url + search).get(); 
    String searchH3 = doc.select("h3").text(); 

    return searchH3.contains(notAWord) ? false : true; 

} 

당신이 원하는 경우 그러나 게시물 요청을 하시려면 Connection.Response을 사용하여 post의 응답을 받으십시오. Connection API를 사용하려면 가져 오기로 import org.jsoup.Connection 만 있으면됩니다.

public static String getUrl(String search) throws IOException{ 

    Connection.Response wordForm = Jsoup.connect("http://wordnetweb.princeton.edu/perl/webwn") 
      .method(Connection.Method.GET) 
      .execute(); 

    String url = "http://wordnetweb.princeton.edu/perl/webwn"; 
    Document doc = Jsoup.connect(url) 
      .data("s", search) 
      .data("o2", "") 
      .data("o0", "1") 
      .data("o8", "1") 
      .data("o1", "1") 
      .data("o7", "") 
      .data("o5", "") 
      .data("o9", "") 
      .data("o6", "") 
      .data("o3", "") 
      .data("o4", "") 
      .data("h", "") 
      .cookies(wordForm.cookies()) 
      .post(); 

    System.out.println(doc); 

    String newURL = doc.location().toString(); 
    return (newURL); 
} 

유사한 예는 here

+1

너무 감사 찾을 수 있습니다! 내가 그 일을 할 수 있다는 것을 몰랐다. – mikedaabeast

+0

궁금한 점이 있다면 현재의 케이스를 해결하는 방법에 대한 답변을 업데이트했습니다. –