- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过 mechanize 登录到一个网站,我正在填写所有表格,然后提交,但每次尝试时,我最终都在同一页面上,所以要么我被重定向回来(没有错误消息),或者表单没有提交。这是为什么?
代码
require 'mechanize'
class Scraper
def initialize
@a = Mechanize.new { |agent|
agent.follow_meta_refresh = true
}
end
def login
@a.get("https://login.salesforce.com/") do |page|
red = page.forms.first do |form|
form.field_with(:type => "email").value = username
form.field_with(:type => "password").value = password
end.click_button
pp red
#puts main.title
end
end
end
s = Scraper.new
s.login
初始页面:
#<Mechanize::Page
{url #<URI::HTTPS:0x007f8f39d6fb30 URL:https://login.salesforce.com/>}
{meta_refresh}
{title "salesforce.com - Customer Secure Login Page"}
{iframes
#<Mechanize::Page::Frame
"marketing"
"https://www.salesforce.com/login-messages/messages.html?noroundedcorner">}
{frames}
{links
#<Mechanize::Page::Link "Salesforce" "http://www.salesforce.com">
#<Mechanize::Page::Link
"Forgot your password?"
"/secur/forgotpassword.jsp?locale=us">
#<Mechanize::Page::Link
"Sign up for free."
"https://www.salesforce.com/form/trial/freetrial.jsp?d=70130000000Enus">}
{forms
#<Mechanize::Form
{name "login"}
{method "POST"}
{action "https://login.salesforce.com/"}
{fields
[hidden:0x3fc79cec63ac type: hidden name: un value: ]
[hidden:0x3fc79cec6244 type: hidden name: width value: ]
[hidden:0x3fc79cec60c8 type: hidden name: height value: ]
[hidden:0x3fc79cec5efc type: hidden name: hasRememberUn value: true]
[hidden:0x3fc79cec5d58 type: hidden name: startURL value: ]
[hidden:0x3fc79cec5bc8 type: hidden name: loginURL value: ]
[hidden:0x3fc79cec5a38 type: hidden name: loginType value: ]
[hidden:0x3fc79cec987c type: hidden name: useSecure value: true]
[hidden:0x3fc79cec969c type: hidden name: local value: ]
[hidden:0x3fc79cec9520 type: hidden name: lt value: standard]
[hidden:0x3fc79cec9340 type: hidden name: qs value: ]
[hidden:0x3fc79cec9174 type: hidden name: locale value: ]
[hidden:0x3fc79cec8f80 type: hidden name: oauth_token value: ]
[hidden:0x3fc79cec8db4 type: hidden name: oauth_callback value: ]
[hidden:0x3fc79cec8be8 type: hidden name: login value: ]
[hidden:0x3fc79cec89cc type: hidden name: serverid value: ]
[hidden:0x3fc79cec8814 type: hidden name: display value: page]
[field:0x3fc79cec8670 type: email name: username value: ]
[field:0x3fc79cec84e0 type: password name: pw value: ]}
{radiobuttons}
{checkboxes
[checkbox:0x3fc79cec833c type: checkbox name: rememberUn value: ]}
{file_uploads}
{buttons [button:0x3fc79cecac2c type: name: Login value: ]}>}>
最后一页:
#<Mechanize::Page
{url #<URI::HTTPS:0x007f9d1d250960 URL:https://login.salesforce.com/>}
{meta_refresh}
{title "salesforce.com - Customer Secure Login Page"}
{iframes
#<Mechanize::Page::Frame
"marketing"
"https://www.salesforce.com/login-messages/messages.html? r=https%3A%2F%2Flogin.salesforce.com%2F&noroundedcorner">}
{frames}
{links
#<Mechanize::Page::Link "Salesforce" "http://www.salesforce.com">
#<Mechanize::Page::Link
"Forgot your password?"
"/secur/forgotpassword.jsp?locale=us">
#<Mechanize::Page::Link
"Sign up for free."
"https://www.salesforce.com/form/trial/freetrial.jsp?d=70130000000Enus">}
{forms
#<Mechanize::Form
{name "login"}
{method "POST"}
{action "https://login.salesforce.com/"}
{fields
[hidden:0x3fce8e93aaac type: hidden name: un value: ]
[hidden:0x3fce8e93a8a4 type: hidden name: width value: ]
[hidden:0x3fce8e93a638 type: hidden name: height value: ]
[hidden:0x3fce8e93a390 type: hidden name: hasRememberUn value: true]
[hidden:0x3fce8e93a19c type: hidden name: startURL value: null]
[hidden:0x3fce8e939f58 type: hidden name: loginURL value: null]
[hidden:0x3fce8e939cc4 type: hidden name: loginType value: ]
[hidden:0x3fce8e9399a4 type: hidden name: useSecure value: true]
[hidden:0x3fce8e93979c type: hidden name: local value: ]
[hidden:0x3fce8e939648 type: hidden name: lt value: standard]
[hidden:0x3fce8e93d414 type: hidden name: qs value:r=https%3A%2F%2Flogin.salesforce.com%2F]
[hidden:0x3fce8e93d284 type: hidden name: locale value: ]
[hidden:0x3fce8e93d0cc type: hidden name: oauth_token value: ]
[hidden:0x3fce8e93cf50 type: hidden name: oauth_callback value: ]
[hidden:0x3fce8e93cd98 type: hidden name: login value: ]
[hidden:0x3fce8e93cc44 type: hidden name: serverid value: ]
[hidden:0x3fce8e93cab4 type: hidden name: display value: page]
[field:0x3fce8e93c780 type: email name: username value: ]
[field:0x3fce8e93c4c4 type: password name: pw value: ]}
{radiobuttons}
{checkboxes
[checkbox:0x3fce8e93c334 type: checkbox name: rememberUn value: ]}
{file_uploads}
{buttons [button:0x3fce8e93b9d4 type: name: Login value: ]}>}>
我的代码有什么问题?
最佳答案
该网站使用Javascript 处理登录,这是mechanize 无法处理的。你可以使用类似 Selenium 的东西访问网站。
关于ruby - Mechanize 不提交表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836528/
我正在使用 mechanize python 登录网站 combochat2.us用户名 mask3和密码findnext ,但它显示了“没有找到 Mechanize 模块”之类的错误 import
我在我的 rails 应用程序中使用 gem mechanize 来抓取网页数据。 我这样使用它: agent = Mechanize.new document = agent.get("http:/
我正在学习机械。我正在尝试打开一个文本文件,您点击的链接显示 文本 (.prn)我遇到的一个问题是此页面上只有 1 个表单,并且该文件不在表单中。对我来说另一个问题是此页面上有几个文本文件,但它们都具
def return_with_soup(url): #uses mechanize to tell the browser we aren't a bot #and to retri
我正在开发一个项目,使用 python 和 Mechanize 。我有个问题 : Mechanize 返回的页面,有不是的 URLS Mechanize ,如果用户点击它,他们将通过链接 他们自己计算
问题: 解析网站时,有些字符会导致 Mechanize 无法正确解析。 提出的解决方案 解析来自网站的响应以删除这些字符 在 Mechanize 之前尝试解析它。 或者,在 Mechanize 解析网
有一个public class method将字段添加到 Mechanize 表单 我试过了.. #login_form.field.new('auth_login','Login') #login_
我有一些看起来像这样的东西: def self.foo agent = Mechanize.new form = agent.get("link/to/form/url") form.f
我在使用 Mechanize gem 时遇到问题,如何转换 Mechanize::文件 进入 Mechanize::页面 , 这是我的一段代码: **link** = page.link_with(:
我正在尝试抓取一个只能依靠类和元素层次结构来找到正确节点的站点。但是使用 Mechanize::Page#search 返回 Nokogiri::XML::Element,我不能用它来填写和提交表单等
我正在使用 mechanize 来抓取一些网页。 我需要知道什么是 Mechanize 限制? Mechanize 不能做什么? 它可以执行网页中嵌入的javascripts吗? 我可以用它来调用 j
在 WWW::Mechanize 中使用表单方法 my @form = $mech->form_number(1); foreach my $sum_form ( @form ) {
找到以下 HTML 代码: 如何使用 Mechanize 单击没有 id 和 name 的提交按钮? 最佳答案 我已经找到了此类场景的答案,代码如下: agent = Mechanize.new
这个问题不太可能对 future 的访客有帮助;它只与一个小的地理区域、一个特定的时刻或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the hel
我一直在尝试使用以下方法从终端运行 ruby 文件: ruby file_cleanse_auto.rb 但是我从 mechanize 得到一个错误: /Library/Ruby/Site/2.0
这是我拥有的代码: agent = Mechanize.new page = agent.get 'http://google.com' page.save 'google_index.htm' 我怎
for link in br.links(url_regex="inquiry-results.jsp"): cb[link.url] = link for page_link in cb.v
我有一个登录表单的页面。登录后有一些重定向。第一个看起来像这样: #"no-cache=\"set-cookie\"", "content-length"=>"114", "set-cookie"=>
我正在尝试使用基本身份验证访问 API。它适用于 HTTParty,但不适用于 2.7.6 Mechanize。 这是我尝试过的: agent = Mechanize.new agent.log =
我正在尝试使用 Ruby 的 Mechanize gem 提交表单。此表单有一组名为“KeywordType”的单选按钮。各个按钮的名称类似于 rdoAny、rdoAll 和 rdoPhrase。使用
我是一名优秀的程序员,十分优秀!