Разрабатываю парсер для сайта, чтобы собирать ссылки на все свежие данные и хранить в одном месте.
Основной контент генерируется в таблице. Нужно получить ссылки на "Предмет торгов по лоту".
Пробовал за счёт POST запроса через CURL, но открывается эта же первая страница со списком лотов. Возможно делаю пост запрос не на тот адрес.
Код такой:
$curl = new \Curl\Curl();
$curl->setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 OPR/94.0.0.0');
$curl->setConnectTimeout(60);
$curl->setTimeout(60);
$curl->setReferrer('https://site.ru/lots.xhtml?sgUnid=3');
$curl->setOpt(CURLOPT_SSL_VERIFYHOST, FALSE);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, FALSE);
$curl->setHeader('X-Requested-With', 'XMLHttpRequest');
$curl->setHeader('Accept', 'application/xml, text/xml, */*; q=0.01');
$curl->setHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
// POST параметры
$curl->post('https://site.ru/lots.xhtml?sgUnid=3', [
// 'javax.faces.partial.ajax' => 'true',
// 'javax.faces.source' => 'formMain:lotListTable:1:lotOpenCardLink',
// 'javax.faces.partial.execute' => 'formMain:lotListTable:10:lotOpenCardLink',
'formMain:lotListTable:10:lotOpenCardLink' => 'formMain:lotListTable:10:lotOpenCardLink',
'formMain' => 'formMain',
'formMain:inputServerTime' => date('H:i:s'),
'formMain:commonSearchCriteriaStr' => '',
'formMain:inputKeyWordId' => '',
'formMain:orgSubId' => '',
'formMain:debtSubId' => '',
'formMain:fromIdPeriod_input' => '',
'formMain:toIdPeriod_input' => '',
'formMain:fromIdAcceptancePeriod_input' => '',
'formMain:toIdAcceptancePeriod_input' => '',
'formMain:j_idt71' => '',
'formMain:j_idt73' => '',
'formMain:sgTable:2:j_idt79_input' => 'on',
'formMain:sgTablePanel_collapsed' => 'false',
'formMain:taTablePanel_collapsed' => 'true',
'formMain:stateTablePanel_collapsed' => 'true',
'formMain:j_idt99_scrollState' => '0,0',
'formMain:selectTreeDlgPanel_collapsed' => 'true',
'formMain:selectRegTreeDlgPanel_collapsed' => 'true',
'formMain:objFilterPanel_collapsed' => 'false',
'formMain:lotListTable_rppDD' => '50',
'formMain:selectTreeDlgTree_selection' => '',
'formMain:selectTreeDlgTree_scrollState' => '0,0',
//'javax.faces.ViewState' => '-6753758380431000397:-233516132474512352'
]);
if ($curl->error) {
echo 'Error: ' . $curl->errorMessage . "\n";
} else {
echo 'Response:' . "\n";
var_dump($curl->response);
}
var_dump($curl->requestHeaders);
var_dump($curl->responseHeaders);
В пост параметрах передаётся такое 'formMain:lotListTable:10:lotOpenCardLink', 10 это номер лота сверху в таблице которая сгенерировалась. Отсчёт начинается с ноля.
Я так понял сайт написан на C# и работает на основе AJAX. Прямых ссылок почти нет.
Есть кто с подобным сталкивался и подскажет куда копать чтобы получить ссылки на "Предмет торгов по лоту".