【问题标题】:How to fetch field names and values from another website?如何从另一个网站获取字段名称和值?
【发布时间】:2013-02-05 03:14:01
【问题描述】:

我在 Java 中遇到了一些问题。我正在尝试获取一个随机命名的输入名称及其值,以及其他一些输入。

我需要从中获取值的页面来源如下所示:

<form action="/login/" id="memberloginForm" method="post">
        <input name="sid" value="8f324234fds330248j4328" type="hidden" />
        <input data-value="1360027648" type="hidden" name="token" value="b482b673cffd5123345fbb21c7fec05" />
        <input name="redirect" type="hidden" value="" />
        <input type="hidden" name="snvlusskh" value="38c546d1302f025f44f9024dc234bac0" />   

其中“sid”的值,“token”的数据值和值,以及最后输入的名称和值,每次访问页面时都是完全随机的。我已经尝试研究 JSoup HTML Parser 库来解决这个问题,但无法弄清楚我如何能够获取每个输入的名称,然后将正确的值与之配对。

我需要做的是获取这些字段的所有名称和值,以便我可以在自己的程序中使用它们。该网站需要这些值才能登录,而我的程序需要能够登录该网站。

感谢任何可以提供帮助的人!

【问题讨论】:

  • 您要从哪个网站获取这些值?
  • 这是一个大问题吗?如果可以的话,我更愿意将其保密,这并不是管理员想要公开的内容。
  • 这对我来说听起来很可疑。似乎创建您尝试通过代码/脚本登录的网站的人确实不希望这种情况发生。您不会回答关于它是哪个网站的问题,这一事实只会使您更有可能做坏事。你可能完全在董事会之上,但我不相信。祝你好运!

标签: java screen-scraping


【解决方案1】:

使用HtmlUnit library。一旦您下载并按照提供的示例解析页面,您就可以像这样提取表单输入:

HtmlForm form = (HtmlForm) HtmlPage.getElementById("memberloginForm");
String sidValue = form.getInputByName("sid").getValueAttribute();

【讨论】:

  • 这似乎正是我所需要的,但是我如何获取每次页面加载时随机生成名称和值的字段的名称和值?
【解决方案2】:

您可以通过 xpath 获得的 sid 和令牌:

//input[@name="sid"]/@value
//input[@name="token"]/@value

你可以得到的最后一个:

//input[last()]/@value

数据值显然只是一个时间戳

【讨论】:

  • 我真的很抱歉,但我会在哪里使用它?我了解您发布的内容,但您的意思是我应该将它与 JSoup 或其他东西一起使用吗?
  • 是的,或者任何知道 xpath 的库。
猜你喜欢
  • 2014-02-09
  • 1970-01-01
  • 2023-04-05
  • 2018-06-26
  • 2015-06-19
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2010-12-11
相关资源
最近更新 更多