Ruby, Mechanize, 403 error,POST или не POST вот в чем вопрос :)

rtyug
На сайте с 13.05.2009
Offline
263
888

есть участок html где нету ссылки, а класс есть class который кликабельный (как ссылка)

т.е. такого ввиду:

<span class='bla'>tsxr<span>

можно дли как-то указать в Mechanize чтобы он кликнул на эту ссылку?

порылся нашел такой код 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="***10;
return {types:['{HH}.Resume.UpdateTimer', '{HH}.Resume.Touch'],***10;
'{HH}.Resume.UpdateTimer': {***10;
wasUpdated: '17573',***10; toUpdate: '',***10;
updateTimeout: '14400000',***10;
resumeLang: 'RU'***10;
},***10;
'{HH}.Resume.Touch': {***10;
resume: '269c232aff00e06e2f0039ed1f4b576d35595a',***10;
retryTrl: 'Обновить еще раз'***10; }}***10;


">Опубликовано <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

получается что ruby точнее НЕ отсылает POST запрос? как сделать чтобы отсылало?

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий