我访问了一个包含此链接的页面:
<a class="portletpage-portlet-title is-active" tabindex="0" title="Registration" data-ppid="registration_WAR_registration" href="#registration">Registration</a>
页面使用SSL加密。 HTML属性href
为#registration
。我正在尝试按照此链接访问URL:
www.redacted.com/#registration
这是我的代码:
agent.get('*redacted*'). do |page|
page.form_with(:action => '*redacted*') do |f|
f.field_with(:id => 'username').value = get_username()
f.field_with(:id => 'password').value = get_password()
end.click_button
agent.page.link_with(:text => 'Registration').click
点击链接时,会产生以下错误:
`fetch': 404 => Net::HTTPNotFound for https://*redacted*/group/1403104853945/academics?p_p_id=registration_WAR_uofsregistration&p_p_state=maximized -- unhandled response (Mechanize::ResponseCodeError)
from /home/mike/.rvm/gems/ruby-2.4.1/gems/mechanize-2.7.5/lib/mechanize.rb:464:in `get'
from /home/mike/.rvm/gems/ruby-2.4.1/gems/mechanize-2.7.5/lib/mechanize.rb:348:in `click'
from /home/mike/.rvm/gems/ruby-2.4.1/gems/mechanize-2.7.5/lib/mechanize/page/link.rb:30:in `click'
from u-of-s-scraper.rb:34:in `<main>'
并提供了网址:
www.redacted.com/group/1403104853945/academics?p_p_id=registration_WAR_uofsregistration&p_p_state=maximized
我不确定Mechanize在哪里获取URL。该链接具有属性data-ppid
,该属性似乎对该URL有贡献。任何人都可以提供一些见解吗?
事实证明,该页面是使用Liferay的Portlet编写的。不幸的是,Portlet不能直接访问URL,因此我目前正在研究一种不同的抓取页面的方法 - 可能是Selenium或PhantomJS。
答案 0 :(得分:0)
data-ppid
是一个数据属性,应该由JavaScript处理。更改URL可能是由于客户端的一些Javascript代码(以及服务器端的重定向)。
答案 1 :(得分:0)
以#开头的链接是“命名链接”或“书签链接” - 它们不会去任何地方,只是跳到页面上的某个位置。
换句话说,没有理由“跟随”机械化这样的链接。