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将其删除。