我正在以下列方式使用Anemone gem:
这很好用,但是有可能如何抓取需要登录的页面(如果我知道用户名和密码)?我知道Mechanize gem提供了填写表单的功能,但我不知道如何将它集成到我的进程中(如果可能的话)。或者还有其他方法如何抓取登录表单后面的页面?
答案 0 :(得分:0)
在您的情况下,我建议使用以下解决方案之一:
因为这两个解决方案允许您填写表单并单击Web元素并执行任何默认Internet用户的操作。在Mechanize gem的情况下,这是不可能的。
答案 1 :(得分:0)
您可以使用mechanize来自动执行登录过程,然后让其会话继续执行您想要的操作。
以下是我的示例代码:
require 'mechanize'
module YourModuleName
class YourClassName
attr_reader :agent
def call
@agent = Mechanize.new
page = @agent.get(@login_page)
form = page.forms.first
form.field_with(id: LoginConstant::CSS[:user_email]).value =
LoginConstant::USER_NAME
form.field_with(id: LoginConstant::CSS[:user_password]).value = LoginConstant::PASSWORD
form.submit
self
end
end
end
然后在您的代码中抓取一个请求登录的页面,如下所示:
response = YourModuleName::YourClassName.new('<your_login_page>').call
response.agent.get('<your_page_to_want_cralwer>')