0

我需要从名为 NetTeller 的系统中抓取一些财务数据。

一个例子可以在这里找到。

注意初始 ID 字段提示:

标识字段

然后,一旦您提交,您必须输入您的密码: 密码字段

如您所见,它有一个两步过程,您首先输入一个 ID 号,然后在提交后向用户显示一个密码字段。在进入系统并获取我真正想要的数据之前,我在这里遇到了一些障碍。在获取要抓取的数据之前,您需要先通过身份验证字段,如何处理这种情况?

我假设我可以直接使用httpclientand nokogiri,但很好奇在进入目标之前处理诸如此类的两页登录时是否有任何技巧。

4

1 回答 1

1

我会使用机械化。第一个页面很“棘手”,因为登录表单位于 iframe 中。因此,您可以只使用加载 iframe 的源。方法如下:

agent = Mechanize.new

# Get first page
iframe_url = 'https://www.banksafe.com/sfonline/'
page = agent.get(iframe_url)
login_form = page.forms.first
username_field = login_form.field_with(:name => "12345678")

# Get second page
response = login_form.submit
second_login_form = response.forms.first
password_field = second_login_form.field_with(:password => "xxxxx")

# Get page to scrap
response = second_login_form.submit

这就是你如何处理这样的场景。显然,您可能需要准确地适应这些表单/字段的编写方式以及其他特定页面的详细信息,但我会采用这种方法。

于 2014-08-17T02:25:59.353 回答