簡體   English   中英

使用jsoup從搜索查詢中選擇結果

[英]Choosing a result from a search query using jsoup

到目前為止,我了解如何從這篇文章中搜索https://stackoverflow.com/a/15184407/4322850

但是我的問題不是如何使用jsoup執行查詢。 有關如何選擇已加載內容的更多信息。 就像我去Google搜索一樣,如何選擇返回的鏈接之一?

編輯:這是問的問題

我有一段html代碼,它們代表網站的一部分,該網站應該是大學教師目錄的搜索小部件

<div id="right_column" class="content_main"> <div class="searchbox"> <form method="POST" action="/faculty/directory_search/" id="searchform"> <h4>Search the Directory</h4> <input type="text" name="searchterms" value="" /> <select name="category" class="dropdown"> <option value="all" selected="selected">All Categories</option> <option value="Faculty">Faculty</option> <option value="Staff">Staff</option> <option value="Visitors">Visitors</option> <option value="Full time">Full time</option> <option value="Visiting">Visiting</option> <option value="Special Appointment">Special Appointment</option> <option value="Biological Sciences">Biological Sciences</option> </select> <input type="hidden" name="sort" value="asc" /> <input type="submit" class="submit" value="Search directory" /> <a class="button" href="/faculty/index/desc" id="sortbutton">Sort Alphabetically</a> </form> <script type="text/javascript"> $('#searchform').ready(function(){ $('#sortbutton').click(function(){ $('input[name="sort"]').val('desc'); $('#searchform').submit(); return false; }); }); </script> </div> 

我正在嘗試輸入名稱“ john”並使用以下Java代碼使用jsoup提交搜索(打算用於android,但總體上與常規java應用程序的Java代碼相同)

Document doc = Jsoup.connect("http://www.qatar.cmu.edu/directory/").data("searchterms", "john").post();

但是,我一直獲得與“ http://www.qatar.cmu.edu/directory/ ”相同的頁面,沒有提交搜索。 我注意到在html代碼中有提交輸入類型。 我想知道是否必須提交搜索。 如果是這樣,怎么辦?

這就是那個問題的答案

Document doc = Jsoup.connect("http://www.qatar.cmu.edu/faculty/directory_search/").data("searchterms", "john").data("sort", "asc").data("category", "all").post();

這個答案對我不起作用。

您無法使用Jsoup提交表單,而是在手動提交表單時,在瀏覽器上監視inspect元素的網絡標簽。 您將看到請求發送到的URL,類型等。

我監視了“網絡”選項卡,發現當我查詢所有類別的john時,他們都向該url發送http get請求: http ://www.qatar.cmu.edu/?feed=directory&q=john&category=0&subcategory= & employeeType = 0&page = 1 它響應一個json對象。 您可以輕松解析

這是獲取搜索結果的json響應的示例代碼:

public static void main(String[] args) throws Exception {
    JSONObject data = getJSONObjectFromUrl("http://www.qatar.cmu.edu/?feed=directory&q=john&category=0&subcategory=&employeeType=0&page=1");
    System.out.println(data);
}

private static JSONObject getJSONObjectFromUrl(String url) throws Exception {
    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    // optional default is GET
    con.setRequestMethod("GET");
    //add request header
    con.setRequestProperty("User-Agent", "Mozilla/5.0");

    StringBuffer response;
    try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))) {
        String inputLine;
        response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
    }

    return new JSONObject(response.toString());
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM