Java Jsoup element.class.class selcet方法返回null
我正在尝试访问Java Jsoup element.class.class selcet方法返回null,java,null,css-selectors,html-parsing,jsoup,Java,Null,Css Selectors,Html Parsing,Jsoup,我正在尝试访问元素中的元素 <form action="search.php" method="post" class="form-inline"> <div class="form-group"> <label for="value"><span class="text-uppercase">Lyrics Search:</span></label>
元素中的
元素
<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.btn btn primary btn sm.form inline”).first()
我尝试使用两个类来访问
元素
那么我做错了什么
编辑
我刚注意到有3个!类添加到
元素。那更乱 要使用多个类搜索一个元素,您必须将多个选择器分组,如下所示选择(“button.btn,button.btn-primary,button.btn-sm”)
有关详细信息,请参见选择器组合部分。要使用多个类搜索一个元素,您必须将多个选择器分组,如下所示
选择(“button.btn,button.btn-primary,button.btn-sm”)
有关详细信息,请参阅选择器组合部分。我从未听说过Jsoup中有一个名为HtmlPage的类。您应该使用调用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选择器
编辑:
你想以后再提交表格吗?然后,您不必搜索submit按钮。您可以在设置搜索值后提交表单。请尝试以下代码:
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
我从来没有听说过Jsoup中有一个叫做HtmlPage的类。您应该使用调用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选择器
编辑:
你想以后再提交表格吗?然后,您不必搜索submit按钮。您可以在设置搜索值后提交表单。请尝试以下代码:
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
因此,我将代码更改为
Element buttonElement=htmlPage.getHtmlDocument()。选择(“button.btn btn primary btn sm,”+“button.form inline,button.form group”)。first()代码>并且它仍然返回null
。您必须删除该部分“button.btn btn primary btn sm”,
。提到的select(“button.btn,button.btn-primary,button.btn-sm”)
将搜索一个按钮
,该按钮有所有三个类btn
,btn primary
,以及btn-sm
分配给它。让我看看这个问题。类=“btn btn主btn sm
实际上是三类,分别是btn
、btn主btn
和`btn sm?!”?!不仅仅是一个类名?是的,三个单独的类分配给一个按钮。这就是为什么需要使用冒号进行分组。它的计算结果类似于分配了类btn、btn primary和btn sm的每个按钮,因此我将代码更改为Element buttonElement=htmlPage.getHtmlDocument()。选择(“button.btn btn primary btn sm,“+”button.form inline,button.form group”)。first()代码>并且它仍然返回null
。您必须删除该部分“button.btn btn primary btn sm”,
。提到的select(“button.btn,button.btn-primary,button.btn-sm”)
将搜索一个按钮
,该按钮有所有三个类btn
,btn primary
,以及btn-sm
分配给它。让我看看这个问题。类=“btn btn主btn sm
实际上是三类,分别是btn
、btn主btn
和`btn sm?!”?!不仅仅是一个类名?是的,三个单独的类分配给一个按钮。这就是为什么需要使用冒号进行分组。它的计算结果类似于分配了类btn、btn primary和btn sm的每个按钮HtmlPage
都是我构建的类。只是连接而已,没什么特别的。那么你发布的代码是为了进入搜索,把我的字符串值放在那里?我已经更新了我的答案。您可以直接提交表单,而无需搜索提交按钮:),是的,此代码将在表单中设置您的搜索值。谢谢。您可以告诉我如何触发按钮单击并获取HTML
页面?为什么要触发按钮单击?使用formElement.submit().post();表单将被提交,您将获得包含搜索结果的文档。您可以使用class
属性作为标识符。但也可能是,页面上有多个包含这些类的元素。所以你不能确定你选择了正确的按钮。我更喜欢id
和name
属性,而不是使用class
-选择器。如果元素没有任何id
或name
,我更喜欢使用特定的选择器,例如div\alphabet>form
。然后您可以确定,您选择了正确的元素。HtmlPage
是我构建的一个类。只是连接而已,没什么特别的。那么你发布的代码是为了进入搜索,把我的字符串值放在那里?我已经更新了我的答案。您可以直接提交表单,而无需搜索提交按钮:),是的,此代码将在表单中设置您的搜索值。谢谢。您可以告诉我如何触发按钮单击并获取HTML
页面?为什么要触发按钮单击?使用formElement.submit().post();表单将被提交,您将获得包含搜索结果的文档。您可以使用class
属性作为标识符。但也可能是,页面上有多个包含这些类的元素。所以你不能确定你选择了正确的按钮。我更喜欢id
和name
属性,而不是使用class
-选择器。如果元素没有任何id
或name
我更喜欢使用特定的选择器,例如