我試圖使用JSOUP
從food delivery website中獲取數據。目標是填寫address field
,單擊submit button
並向用戶顯示響應。但是當試圖找到主頁上的表格時,我得到java.lang.RuntimeException: Unable to find form
。 searchFormResponse.parse()
包含主頁HTML
,所以問題不在那裏。我已經嘗試了多種方式從jsoup
網站選擇表單,但似乎沒有任何效果。任何幫助都感激不盡。如果它有任何重要性,它是一個Android應用程序。提前致謝。jsoup android java.lang.RuntimeException:無法找到表格
這裏是我的代碼
final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36";
final String LOGIN_FORM_URL = "https://deliveroo.fr/fr/"; //TODO make it adapt to the country
final String myAddress = a;
// # Go to login page
Connection.Response searchFormResponse = Jsoup.connect(LOGIN_FORM_URL)
.method(Connection.Method.GET)
.userAgent(USER_AGENT)
.execute();
// # Fill the search form
// ## Find the search first...
FormElement searchForm = (FormElement)searchFormResponse.parse()
.select("div#landing-index-page-search__container > form").first();
// ## ... then "type" the address ...
Element searchField = searchForm.select("#landing-index-page-search--input").first();
searchField.val(myAddress);
// # Now send the form
Connection.Response loginActionResponse = searchForm.submit()
.cookies(searchFormResponse.cookies())
.userAgent(USER_AGENT)
.execute();
System.out.println(loginActionResponse.parse().html());
網站代碼
<div class="landing-index-page-search__container" data-reactid=".1d1c1t7z20w.2.0.0.1.1">
<h1 class="landing-index-page-search--main-title" data-reactid=".1d1c1t7z20w.2.0.0.1.1.0">Vos restaurants préférés, livrés en moins de 30 minutes.</h1>
<form method="get" action="" class="landing-index-page-search--form landing-index-page-search--non-postcode" data-reactid=".1d1c1t7z20w.2.0.0.1.1.2">
<span data-reactid=".1d1c1t7z20w.2.0.0.1.1.2.0"></span>
<div data-reactid=".1d1c1t7z20w.2.0.0.1.1.2.1">
<div class="landing-index-page-search--input" data-reactid=".1d1c1t7z20w.2.0.0.1.1.2.1.1">
<div class="landing-index-page-search--input address-search" data-reactid=".1d1c1t7z20w.2.0.0.1.1.2.1.1.1">
<input name="address_search" type="text" tabindex="-1" class="" placeholder="Saisissez votre adresse" value=" " data-reactid=".1d1c1t7z20w.2.0.0.1.1.2.1.1.1.0"/></div>
<input id="find_food" type="submit" value="Voir les restaurants" class="button" data-reactid=".1d1c1t7z20w.2.0.0.1.1.2.1.1.2"/>
非常感謝。另一個快速的問題可能是你知道答案,我怎麼才能得到我點擊提交按鈕後打開的網址? –
我想[這篇文章](https://stackoverflow.com/questions/24907808/jsoup-get-redirected-url)應該幫助你 – Nico