Есть сайт https://customer.menziesworld.nl/, с него нужно забрать данные по определенной накладной.
пытаюсь в консоли сделать следующее:
require 'mechanize'
agent = Mechanize.new
agent.get('https://customer.menziesworld.nl/')
form = agent.page.forms.first
form['ctl00$cpMasterBody$tbAwbPrefix'] = 262
form['ctl00$cpMasterBody$tbAwbSerial'] = 50426471
form.submit
agent.page.search('.dxgvTable')
но в ответ получаю #=> []
Подскажите пожалуйста, как решить проблему, сайт на ASP.NET
Так же подойдет решение с эмуляцией браузера, типа Катибара Полтергейст
Ответ
Получилось как-то так:
require 'mechanize'
AwbPrefix = 262
AwbSerial = 50426471
agent = Mechanize.new
agent.user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'
agent.get('https://customer.menziesworld.nl')
form = agent.page.forms[0]
headers = {
'Host' => 'customer.menziesworld.nl',
'Connection' => 'keep-alive',
'Cache-Control' => 'max-age=0',
'Origin' => 'https://customer.menziesworld.nl',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Content-Type' => 'application/x-www-form-urlencoded',
'Referer' => 'https://customer.menziesworld.nl',
'Accept-Encoding' => 'gzip, deflate, br',
'Accept-Language' => 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4'
}
params = {
'__EVENTTARGET' => '',
'__EVENTARGUMENT' => '',
'__VIEWSTATE' => form.field_with(name: '__VIEWSTATE').value,
'__VIEWSTATEGENERATOR' => form.field_with(name: '__VIEWSTATEGENERATOR').value,
'ctl00$cpMasterBody$tbAwbPrefix' => AwbPrefix,
'ctl00$cpMasterBody$tbAwbSerial' => AwbSerial,
'ctl00$cpMasterBody$btSearch' => 'submit'
}
agent.post('https://customer.menziesworld.nl', params, headers)
agent.page.search('.dxgvTable')
Поправьте пожалуйста если что-то можно улучшить.
Комментариев нет:
Отправить комментарий