gpt4 book ai didi

javascript - 如何使用 jsoup 发布 javascript 表单?

转载 作者:行者123 更新时间:2023-11-30 16:05:49 24 4
gpt4 key购买 nike

我想从 http://www.wettportal.com/quotenarchiv/ 中提取一些数据.

有一个javascript形式: Search

<form id="archivesearchform" name="archivesearchform" method="post" action="">
...
<td class="ralign">Sportart:</td>
<td>
<select name="sport_id" id="sport_id" style="width:100%">
...
<td class="ralign">Land:</td>
<td>
<select name="region_id" id="region_id" style="width:100%;">
...
<td class="ralign">Liga:</td>
<td>
<select name="league_id" id="league_id" style="width:100%">
...
<td class="ralign">vom:</td>
<td>
<input type="text" name="fromdate" id="fromdate" style="width:100%" />
...
<td class="ralign">vom:</td>
<td>
<input type="text" name="fromdate" id="fromdate" style="width:100%" />
</td>
<td class="ralign">bis:</td>
<td>
<input type="text" name="tilldate" id="tilldate" style="width:100%" />
</td>
<td colspan="2"></td>
</tr>
<tr>
<td class="ralign">Teilnehmer:</td>
<td colspan="3"><input type="text" name="team" style="width:100%" /></td>
<td colspan="2"></td>
</tr>
</tbody>

和提交按钮:

<tr>
<td class="lalign"></td>
<td class="calign"><input type="submit" name="btnSubmit" value="Suchen" /></td>
<td class="ralign"><div class="loading-animation" id="div_loading"></div></td>
</tr>

我用这段代码试试:

import java.io.IOException; 

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class QAJesoupE {

public static void main(String[] args) {

try {
Document doc = Jsoup.connect("http://www.wettportal.com/quotenarchiv/")
.data("sport_id", "4")
.data("region_id", "16")
.data("league_id", "0")
.data("fromdate", "")
.data("tilldate", "")
.data("team", "")
// and other hidden fields which are being passed in post request.
.userAgent("Mozilla")
.post();
System.out.println(doc); // will print html source of homepage of facebook.

} catch (IOException e) {
e.printStackTrace();
}
}
}

但我只得到 HTML 代码,没有任何搜索结果。 :-/

有人能帮帮我吗?

提前致谢!

最佳答案

此站点上有一个脚本可以处理表单提交。即使 form 元素定义了一个 POST,脚本实际上发送了一个 get 请求,并将数据作为 URL 参数:

http://www.wettportal.com/lib/ajax/getArchivedEvents.php?partner=wettportal&lang=de&sport_id=4&region_id=23&league_id=0&fromdate=&tilldate=&team=

Jsoup 将为您创建请求 URL(带参数),但您必须发送一个 GET 请求并包含 X-Requested-With header (见下文):

Document doc = Jsoup
.connect("http://www.wettportal.com/lib/ajax/getArchivedEvents.php")
.data("sport_id", "4")
.data("region_id", "16")
.data("league_id", "0")
.data("fromdate", "")
.data("tilldate", "")
.data("team", "")
.header("X-Requested-With", "XMLHttpRequest")
.timeout(10000)
.get();

关于javascript - 如何使用 jsoup 发布 javascript 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37070064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com