Ruby, Mechanize, 403 error,POST или не POST вот в чем вопрос
Добавлено: 2012-10-16 1:00:34
есть участок html где нету ссылки, а класс есть class который кликабельный (как ссылка)
т.е. такого ввиду:
можно дли как-то указать в Mechanize чтобы он кликнул на эту ссылку?
порылся нашел такой код html:
написал скрипт на ruby буби:
выдало ошибка 403 как я понял, в интернете нашел что ошибка из-за того сервер хочет исключитально POST запрос
получается что ruby точнее НЕ отсылает POST запрос? как сделать чтобы отсылало?
т.е. такого ввиду:
Код: Выделить всё
<span class='bla'>tsxr<span>
порылся нашел такой код html:
Код: Выделить всё
<form id="touchForm" action="/applicant/resumes/touch" method="POST">
<input type="hidden" name="resume" value="269c232aff00e06e2f0039ed1f4b576d35595a" /></form>
</div></div><div class="resume__autoupdate g-round m-round_5" onclick="
return {types:['{HH}.Resume.UpdateTimer', '{HH}.Resume.Touch'],
'{HH}.Resume.UpdateTimer': {
wasUpdated: '17573', toUpdate: '',
updateTimeout: '14400000',
resumeLang: 'RU'
},
'{HH}.Resume.Touch': {
resume: '269c232aff00e06e2f0039ed1f4b576d35595a',
retryTrl: 'Обновить еще раз' }}
">Опубликовано <span class="update__date HH-Resume-UpdateTimer-WasUpdated">полдня</span> назад
<div class="HH-Resume-UpdateTimer-ToUpdate-Container g-hidden">Обновить можно через
<span class="HH-Resume-UpdateTimer-ToUpdate"></span></div><div class="update__status">
<div class="update__status__error g-hidden HH-Resume-Touch-Error ">Не удалось обновить дату</div>
<span class="g-switcher m-switcher_999 HH-Resume-Touch-Button">Обновить дату </span></div></div>
<script type="text/javascript">
(function(){
HH=window.HH||{};HH.cid=HH.cid?HH.cid+1:1;
document.write('<script id="c' + HH.cid + '"> </scr'+'i'+'pt>');
var c = document.getElementById('c' + HH.cid).previousSibling;
try { while (c.nodeType != 1 || c.tagName.toLowerCase() == 'script') c = c.previousSibling;
c.id = 'component_' + HH.cid;
HH.comps=HH.comps||[];HH.comps.push(c.id);
}catch(e){};
})();
написал скрипт на ruby буби:
Код: Выделить всё
#!/usr/bin/ruby
require 'rubygems'
require 'hpricot'
require 'mechanize'
# require'Mechanize::Page::Link'
agent = Mechanize.new
agent.read_timeout = 60
#agent.idle_timeout = 60
agent.open_timeout = 60
page = agent.get 'http://hh.ua/logon.do'
form = page.form_with( :action => 'http://hh.ua/logon.do' )
username_field = form.field_with(:name => "username")
username_field.value = ""
password_field = form.field_with(:name => "password")
password_field.value = ""
#submit form
##http://hh.ua/applicant/resumes/touch?resume=269c232aff00e06e2f0039ed1f4b576d35595a&undirectable=true
page = agent.post( 'http://hh.ua/applicant/resumes/touch', {'resume' => '269c232aff00e06e2f0039ed1f4b576d35595a', 'undirectable' => 'true'} )
output = File.open("output.html", "w") { |file| file << agent.page.body }
#http://mechanize.rubyforge.org/Mechanize/Page/Link.html#method-i-dom_class
#agent.click page.link_with( :text => /Обновить дату/)
#[04:32:25.932] GET http://hh.ua/applicant/resumes/human_datetime?lang=RU&timeWasUpdated=1&timeToUpdate=14400 [HTTP/1.1 200 OK 63мс]
# page = agent.get 'http://hh.ua/resume/269c232aff00e06e2f0039ed1f4b576d35595a'
#page.link_with(:text => 'Обновить дату')
# page.link_with(:text => 'Обновить дату').click
# page.link_with( :dom_class => "HH-Resume-Touch-Button").click
#agent.click page.search("//span[@class='g-switcher m-switcher_999 HH-Resume-Touch-Button']/p/b")
#page = agent.get 'http://www.work.ua/jobseeker/my/resumes/edit-resume-info/?id=1471258'
#form = page.form_with( :method => "POST" )
#username_field = form.field_with(:name => "data[name][1]")
#username_field.value = "Perl-программист (удаленно - ~100$, в офисе - ~2000?)"
#agent.submit(form)
### puts page.body
#output = File.open("output.html", "w") { |file| file << agent.page.body }
# STDIN.gets
# puts agent.inner_text;
#form = page.form_with(:method => //)
#form.file_upload_with(:name => "file").value = '/home/lord/LOR/12345.png'
#agent.submit form
выдало ошибка 403 как я понял, в интернете нашел что ошибка из-за того сервер хочет исключитально POST запрос
Код: Выделить всё
$ ./rhh.rb
/usr/lib/ruby/1.8/mechanize.rb:464:in `post_form': 403 => Net::HTTPForbidden (Mechanize::ResponseCodeError)
from /usr/lib/ruby/1.8/mechanize.rb:357:in `post'
from ./rhh.rb:31