Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

как забрать данные с определенного web сайта gem Mechanize

Есть сайт 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')
Поправьте пожалуйста если что-то можно улучшить.

Комментариев нет:

Отправить комментарий