我使用Java来爬行网页。

我在项目中导入了com.gargoylesoftware.html单元,就可以获取该网页。

网页中有输入。 当我在输入中输入关键字并按“ Enter”键时,将刷新部分网页。 没有提交按钮。 那么如何在我的Java代码中获取刷新的网页?

这是我的代码:

client.getOptions().setJavaScriptEnabled(true);
client.getOptions().setRedirectEnabled(true);
client.setAjaxController(new NicelyResynchronizingAjaxController());

HtmlPage page = client.getPage(url);
HtmlInput termInput = (HtmlInput) page.getByXPath("/html/body/div[2]/div/main/section/div/div/div/div/div[1]/div/div[2]/input").get(0);
termInput.setAttribute("value", "Annual Report");
saveFile(this.getFilePath(""), page.asXml());

我将该网页另存为计算机中的文件。 我可以在浏览器中打开它。 而且我可以看到我在输入中设置的值,但是内容没有刷新。

没有提交按钮。

#1楼 票数:0

为了通过按Enter刷新页面,您需要输入转义序列以输入到输入中。

您可以通过在输入中键入\\ n来完成此操作,如下所示:

termInput.type("\n"); 

  ask by Shaohui.Wang translate from so

未解决问题?本站智能推荐:

1回复

如何使用htmlunit获取输入字段值?

我正在使用Java和htmlunit。 我在网页中有此输入: 网站上的哪个字段看起来像一个字段,可让您选择“选择日期”(2014年1月,2014年2月等)。 这些字段中的每个字段都有一个关联的值,例如2014年1月对应于value = 2014年2月3日value = 4,依此类
2回复

有关HtmlPage对象未清除的问题

在此HtmlUnit示例中,我已经清理了HtmlPage,但仍在main方法中获取了指定url的锚点,因为我在这段代码中认为在先计算return语句,然后最后调用,然后再计算上面的页面是从getPageResource()方法返回的,或者如果您认为除此以外,请共享。 但在我的脑海里一个更值
1回复

Java中的HtmlPage反序列化-ClassNotFound错误

我在从HtmlUnit java包反序列化Htmlpage时遇到一些麻烦。 TL; DR 我得到的错误(发生在Object o = in.readObject(); ): 完整的堆栈跟踪: http : //pastebin.com/geH7SgWu 题 可能是此
3回复

如何在使用java设置屏幕抓取表单的值后调用post方法

背景:我有一个网页(.aspx) ,其下拉列表很少。列表值是根据之前下拉列表的选择使用Ajax调用填充的。 选择所有下拉列表的值后,我们可以单击下载按钮,将根据我们执行某些其他操作所需的下载数据下载数据。 我已经做了什么:我能够通过正确调用ajax设置下拉数据,但发送一个帖子请求是一个问
2回复

HtmlPage如何使用HTMLUNIT Java刷新?

刷新页面时遇到问题。 我正在使用HTMLUNIT,正在使用WebClient和HTMLPAge访问资源。 我需要刷新页面以便从资源中获取新数据。 我试图清除缓存webClient.getCache()。clear(); 并尝试再次使用 我从资源中获取了相同的先前数据。 我
2回复

返回所有HtmlPage的HTML

我想要给定的HtmlPage对象的整个HTML。 我应该使用什么财产?
2回复

使用HTMLUnit声明HtmlPage时出错

当我使用此代码时: 我收到此错误: 我见过有人说这是AngularJS的话题,但事实是我无法在该网站上编辑代码,因此无法通过更改网站代码来修复它。 我尝试使用其他浏览器版本,但是它们都返回相同的错误。 有什么帮助吗?
3回复

是否可以从字符串加载HtmlPage?

我已将网页的HTML存储在数据库中。 我想利用HtmlUnit查找/引用DOM元素的能力。 是否可以从字符串(通过数据库列)加载HtmlPage对象?