Jsoup element.class.class selcet 方法返回 null
Jsoup element.class.class selcet method returning null
我正在尝试获取 <form>
元素中的 <button>
元素。
<form action="search.php" method="post" class="form-inline">
<div class="form-group">
<label for="value"><span class="text-uppercase">Lyrics Search:</span></label>
<input type="text" name="value" class="form-control input-sm">
</div>
<div class="form-group">
<select name="field" class="form-control input-sm">
<option value="artist" >Artist</option>
<option value="title" >Title</option>
<option value="body" >Body</option>
</select>
<button type="submit" class="btn btn-primary btn-sm">Submit</button>
</div>
</form>
现在 <button>
元素在 2 HTML
类 中,我知道我需要在 select()
方法中连接那些 类。
不知何故我的代码 returns null
在 select()
方法之后。
我的代码:
HtmlPage htmlPage = new HtmlPage(Jsoup.connect("http://www.lyricsplanet.com/").get());
// Get to <div class="form-group">
Element searchFormElement = htmlPage.getHtmlDocument().select("div.form-group").first();
searchFormElement.attr("name", searchedLyrics); // Setting the value of name to the searched lyrics.
// Getting to <button type="submit" class="btn btn-primary btn-sm">Submit</button>
Element buttonElement = htmlPage.getHtmlDocument().select("button.btn btn-primary btn-sm.form-inline").first();
System.out.println(buttonElement.html());
在 - select("button.btn btn-primary btn-sm.form-inline").first();
我尝试使用两个 类.
到达 <button>
元素
那我做错了什么?
编辑
我刚刚注意到有3个! 类 到 <button>
元素。那更乱。
要使用多个 类 搜索一个元素,您必须像这样 select("button.btn, button.btn-primary, button.btn-sm")
.
对多个选择器进行分组
有关详细信息,请参阅 选择器组合 部分中的 http://jsoup.org/cookbook/extracting-data/selector-syntax。
我从没听说过 class Jsoup 中有一个叫做 HtmlPage 的东西。您应该使用 Document-class 如果您调用 Jsoup.connect(...);
将被返回
您可以试试下面的代码:
Document document = Jsoup.connect("http://www.lyricsplanet.com/").get(); // Just connect
Element formElement = document.select("div#alphabet > form").first(); // Search for form
formElement.select("input[name=value]").val(yourSearchValue); // Set your search value
Element submitButton = formElement.select("button[type=submit]").first(); // Then search in form for submit button, otherwise your selector could find another submit button first
HTML 表单元素(搜索字段和提交按钮)没有您可以使用的标识符。唯一的方法是使用这些特定的 css 选择器。
编辑:
您想稍后提交表格吗?这样您就不必搜索提交按钮。您可以在设置搜索值后提交表单。试试下面的代码:
Document document = Jsoup.connect("http://www.lyricsplanet.com/").get();
FormElement formElement = document.select("div#alphabet > form").forms().get(0); // Use FormElement instead of Element
formElement.select("input[name=value]").val(yourSearchValue);
Document searchResult = formElement.submit().post(); // Do anything you want with the search result page/html
我正在尝试获取 <form>
元素中的 <button>
元素。
<form action="search.php" method="post" class="form-inline">
<div class="form-group">
<label for="value"><span class="text-uppercase">Lyrics Search:</span></label>
<input type="text" name="value" class="form-control input-sm">
</div>
<div class="form-group">
<select name="field" class="form-control input-sm">
<option value="artist" >Artist</option>
<option value="title" >Title</option>
<option value="body" >Body</option>
</select>
<button type="submit" class="btn btn-primary btn-sm">Submit</button>
</div>
</form>
现在 <button>
元素在 2 HTML
类 中,我知道我需要在 select()
方法中连接那些 类。
不知何故我的代码 returns null
在 select()
方法之后。
我的代码:
HtmlPage htmlPage = new HtmlPage(Jsoup.connect("http://www.lyricsplanet.com/").get());
// Get to <div class="form-group">
Element searchFormElement = htmlPage.getHtmlDocument().select("div.form-group").first();
searchFormElement.attr("name", searchedLyrics); // Setting the value of name to the searched lyrics.
// Getting to <button type="submit" class="btn btn-primary btn-sm">Submit</button>
Element buttonElement = htmlPage.getHtmlDocument().select("button.btn btn-primary btn-sm.form-inline").first();
System.out.println(buttonElement.html());
在 - select("button.btn btn-primary btn-sm.form-inline").first();
我尝试使用两个 类.
<button>
元素
那我做错了什么?
编辑
我刚刚注意到有3个! 类 到 <button>
元素。那更乱。
要使用多个 类 搜索一个元素,您必须像这样 select("button.btn, button.btn-primary, button.btn-sm")
.
有关详细信息,请参阅 选择器组合 部分中的 http://jsoup.org/cookbook/extracting-data/selector-syntax。
我从没听说过 class Jsoup 中有一个叫做 HtmlPage 的东西。您应该使用 Document-class 如果您调用 Jsoup.connect(...);
将被返回您可以试试下面的代码:
Document document = Jsoup.connect("http://www.lyricsplanet.com/").get(); // Just connect
Element formElement = document.select("div#alphabet > form").first(); // Search for form
formElement.select("input[name=value]").val(yourSearchValue); // Set your search value
Element submitButton = formElement.select("button[type=submit]").first(); // Then search in form for submit button, otherwise your selector could find another submit button first
HTML 表单元素(搜索字段和提交按钮)没有您可以使用的标识符。唯一的方法是使用这些特定的 css 选择器。
编辑: 您想稍后提交表格吗?这样您就不必搜索提交按钮。您可以在设置搜索值后提交表单。试试下面的代码:
Document document = Jsoup.connect("http://www.lyricsplanet.com/").get();
FormElement formElement = document.select("div#alphabet > form").forms().get(0); // Use FormElement instead of Element
formElement.select("input[name=value]").val(yourSearchValue);
Document searchResult = formElement.submit().post(); // Do anything you want with the search result page/html