Jsoup发布修改过的文档

我正在尝试为即将推出的Android应用程序创建一个web scraper。 因此,我需要在网站上使用简单的搜索表单,填写并将结果发送回服务器。

正如Jsoup-Cookbook中所提到的,我从服务器上删除了我需要的站点并更改了值。

现在我只需要将修改后的文档发回服务器并抓取生成的页面。 就我在Jsoup-API中看到的那样,除了Jsoup.connection中的.data-Attribute之外,没有办法发回一些东西,遗憾的是,它无法通过id填写文本字段。

任何想法或解决方法,如何将修改后的文档或其部分发布回网站?

您似乎误解了HTTP的工作原理。 具有修改的输入值的整个 HTML文档不是从客户端发送到服务器的。 更重要的是,所有输入元素的name = value对都作为请求参数发送。 然后,服务器将返回所需的HTML响应。

例如,如果您想在Jsoup中模拟以下表单的提交(您可以通过在浏览器中打开带有表单的页面找到确切的HTML表单语法,然后右键单击, 查看源代码

 

那么你需要构建如下的请求:

 Document document = Jsoup.connect("http://example.com/somescript") .data("text1", "yourText1Value") // Fill the first input field. .data("text2", "yourText2Value") // Fill the second input field. .data("hidden1", "hidden1value") // You need to keep it unmodified! .data("button1", "Submit") // This way the server knows which button was pressed. .post(); // ... 

在某些情况下,你还需要发回会话cookie,但这是一个独立的主题(以及之前已经多次询问的问题;一般来说,使用真正的HTTP客户端更容易实现这一点并通过它通过Jsoup#parse()回应。

也可以看看:

  • HTTP教程
  • HTTP规范

那不是那样的。 您应该创建一个POST请求(使用Apache HTTP组件),获取响应,然后使用JSoup将其删除。