JSOUP:设置表单数据
JSOUP: set form data
我正在创建一个使用 JSOUP 的 JAVA 程序。这就是我的想法:
我想使用 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>
我不知道该怎么办。这是我唯一坚持的部分。
到目前为止我试过了,但它没有做任何事情
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);
}
您可以通过操纵 url 的端点来搜索您想要的内容:
http://wordnetweb.princeton.edu/perl/webwn?s=
并将您要搜索的内容连接到它。
如果您要搜索的词是 "bill"
那么
/*
* 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);
}
那么如果你只是想测试一个词是否是一个词你可以这样做
/*
* 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;
}
如果您想发出 post 请求,您可以使用 Connection.Response
来获得 post
的响应。您只需要将 import org.jsoup.Connection
作为导入即可使用连接 API。
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
我正在创建一个使用 JSOUP 的 JAVA 程序。这就是我的想法:
我想使用 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>
我不知道该怎么办。这是我唯一坚持的部分。 到目前为止我试过了,但它没有做任何事情
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);
}
您可以通过操纵 url 的端点来搜索您想要的内容:
http://wordnetweb.princeton.edu/perl/webwn?s=
并将您要搜索的内容连接到它。
如果您要搜索的词是 "bill"
那么
/*
* 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);
}
那么如果你只是想测试一个词是否是一个词你可以这样做
/*
* 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;
}
如果您想发出 post 请求,您可以使用 Connection.Response
来获得 post
的响应。您只需要将 import org.jsoup.Connection
作为导入即可使用连接 API。
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