Qairat
@Qairat
frontend developer, angular 2+

Как правильно спарсить phpquery?

Всем привет!
вот мой код парсера с сайта:
<?php 
header('Content-type: text/html; charset=utf-8');
require 'phpQuery.php';

function print_arr($arr){
	echo '<pre>' .print_r($arr, true). '</pre>';
}

$url  = 'http://elicense.kz/LicensingContent/SimpleSearchLicense?GlobalNumberEquality=1&NikadNumberEquality=1&RequestNikadNumberEquality=1&RequestGlobalUniqueNumberEquality=1&NumberEquality=1&SeriesEquality=1&IinEquality=1&BinEquality=1&RnnEquality=1&LicensiatEquality=1&LicensiarEquality=1&ActivityTypeEquality=256&ActivityTypeStr=%D0%BC%D0%BE%D0%BD%D1%82%D0%B0&DateIssueEquality=1&StatusEquality=1&StatusStr=0&isExtended=true%2Cfalse&lang=ru';
$file = file_get_contents($url);


$doc = phpQuery::newDocument($file);
// $table = $doc->find('.DefaultTablde tr:eq(1) td:eq(1)')->text();
// echo $table;

foreach ($doc->find('.DefaultTablde') as $row) {
	$row = pq($row);
	$number = $row->find('tr:eq(1) td:eq(1)')->html();
	print_arr($number);
}


Выводить только №0000178
Мне надо выводить отмеченные значении на рисунке.
a827785c2d304327b5db523c712c6935.JPG
Как сделать? Помогите....
  • Вопрос задан
  • 573 просмотра
Пригласить эксперта
Ответы на вопрос 1
@ParaleX
Ошибка в цикле foreach.
$doc->find('.DefaultTablde') находит естественно только одну таблицу.
Можно сделать, например, так:

<?php 
set_time_limit(100);
header('Content-type: text/html; charset=utf-8');
require '.phpQuery/phpQuery.php';

function print_arr($arr){
  echo '<pre>' .print_r($arr, true). '</pre>';
}

$url  = 'http://elicense.kz/LicensingContent/SimpleSearchLicense?GlobalNumberEquality=1&NikadNumberEquality=1&RequestNikadNumberEquality=1&RequestGlobalUniqueNumberEquality=1&NumberEquality=1&SeriesEquality=1&IinEquality=1&BinEquality=1&RnnEquality=1&LicensiatEquality=1&LicensiarEquality=1&ActivityTypeEquality=256&ActivityTypeStr=%D0%BC%D0%BE%D0%BD%D1%82%D0%B0&DateIssueEquality=1&StatusEquality=1&StatusStr=0&isExtended=true%2Cfalse&lang=ru';
$file = file_get_contents($url);


$doc = phpQuery::newDocument($file);
// $table = $doc->find('.DefaultTablde tr:eq(1) td:eq(1)')->text();
// echo $table;
foreach ($doc->find('.DefaultTablde tr') as $row) {
  $row = pq($row);
  $number = array();
  $number[] = $row->find('td:eq(1)')->text();
  $number[] = $row->find('td:eq(2)')->text();
  $number[] = $row->find('td:eq(7)')->text();
  $number[] = $row->find('td:eq(8)')->text();
  print_arr($number);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы