Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Парсер страницы и запись в массив

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробую написать скрипт для парсера информации с сайта поставщика, подскажите пожалуйста что поправить в скрипте чтобы писало не в одну ячейку а несколько для вывода потом в таблицу вида Тип (клавитаура, матрица и пр $find0, Наименование ($find['1]), стоимость $find['2], наличие $find['3.
 
<?php
 
    //$query = urlencode(iconv('UTF-8','UTF-8', $query));
 
  $cl2 = curl_init();
  curl_setopt($cl2, CURLOPT_URL, 'http://nb-plus.ru/index.php?route=product/search&filter_name=hp');
  curl_setopt($cl2, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($cl2, CURLOPT_HEADER, 0);
  curl_setopt($cl2, CURLOPT_POST, 1);
  curl_setopt($cl2, CURLOPT_POSTFIELDS, 'http://nb-plus.ru/index.php?route=product/search&filter_name=hp');
  curl_setopt($cl2, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');
  curl_setopt($cl2, CURLOPT_CONNECTTIMEOUT, 60); // таймаут соединения
  curl_setopt($cl2, CURLOPT_TIMEOUT, 60);        // таймаут ответа
  curl_setopt($cl2, CURLOPT_REFERER, 'http://nb-plus.ru/'); // Подделываем значение - откуда пришли данные.
  curl_setopt($cl2, CURLOPT_MAXREDIRS, 10);       // останавливаться после 10-ого редиректа
  $result = curl_exec($cl2);
  curl_close($cl2);
 
 
$p1=strpos($result,"<span>Поиск</span></a>");
$p2=strpos($result,"<div class=\"pagination\">");
$result = substr($result,$p1,$p2-$p1);
 
    preg_match_all('#(<strong>[a-zA-Zа-яА-Я]*</strong> &rarr; <a href="http://nb-plus.ru/(.[a-zA-Z]*)/(.[a-zA-Z0-9_]*).html.*</div>)#uis', $result, $find);
 
print_r($find);

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 16:10 16-03-2014 | Исправлено: usertum, 16:49 16-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum

Цитата:
чтобы писало не в одну ячейку а несколько для вывода

писало что??  
вы же видите, что из себя представляет массив $find, вот с ним и работаете.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:07 16-03-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$find['1'] $find['2'] $find['3'] получаются у меня пустыми (
И массив формируется странно, туда попадают картинки и прочее хотя в регулярном выражении их нет, уже проверял отладчиком регулярных выражений.

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 22:46 16-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum

Цитата:
$find['1'] $find['2'] $find['3'] получаются у меня пустыми (

что выдает
Цитата:
print_r($find);

?
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:48 16-03-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Немного изменил регулярку, сделал #<strong>[a-zA-Zа-яА-Я ]*</strong> &rarr; <a href="http://nb-plus.ru(.[a-zA-Z0-9-_]*)(.*)(.[a-zA-Z0-9-_]*).html">(.*)</a>#uis

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 23:31 16-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum
ну зачем мне преобразованный html код ?)))

Цитата:
#uis

добавьте сюда U
#Uuis
 
более того - по регуляркам есть тема
PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:34 16-03-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Стало
 
Array ( [0] => Array ( [0] => Клавиатуры &#8594; HP Mini 1000 (Черная) [1] => Клавиатуры &#8594; HP Compaq CQ60 (Черная) [2] => Клавиатуры &#8594; HP Pavilion DV7-7000 (Черная, русская) [3] => Аккумуляторы &#8594; Dell Inspiron 1525 (Черный, 11,1 В, 5200 мА·ч) [4] => Матрицы для ноутбуков &#8594; LTN160AT06 U04 (1366*768,LED,40pin,справа снизу,глянцeвая) [5] => Блоки питания &#8594; Toshiba (Черный, 19V-3.95A, 5.5х2.5mm) [6] => Клавиатуры &#8594; HP Mini 1103, 210-2000 series (Черная, русская) [7] => Клавиатуры &#8594; HP Compaq 6530B, 6535B (Черная) [8] => Разъемы &#8594; PJ045-1.65мм [9] => Клавиатуры &#8594; HP Pavilion DV6-6000 (Черная, русская) [10] => Клавиатуры &#8594; HP Pavilion DV4000 (Черная) [11] => Клавиатуры &#8594; HP Compaq CQ61 (Черная) [12] => Матрицы для ноутбуков &#8594; CLAA101NC05 (1024*600,LED,40pin,слева снизу,матовая) [13] => Аккумуляторы &#8594; HP DV2000 (Черный, 10,8 В, 5200 мА·ч) [14] => Переходники &#8594; переходник CCFL-LED для матриц 15.6" универсальный [15] => Блоки питания &#8594; Sony (Черный, 19.5V-4.7A, 6.0x4.4mm с иглой) [16] => Клавиатуры &#8594; HP Compaq Presario CQ72 G72 (Черная, русская) [17] => Клавиатуры &#8594; HP Compaq 6530S, 6730S, 6531S, CQ610 (Черная) [18] => Разъемы &#8594; PJ048-1.65мм [19] => Клавиатуры &#8594; HP Pavilion DV7-1000 (Серебряная, русская) [20] => Клавиатуры &#8594; HP Pavilion DV5-1000 (Серебряная) [21] => Аккумуляторы &#8594; HP 6720, 6720s (Черный, 10,8 В, 5200 мА·ч) [22] => Матрицы для ноутбуков &#8594; LP154WX5 (TL)(C1) (1280*800,CCFL,30pin,справа сверху,глянцeвая) [23] => Аккумуляторы &#8594; HP 4210HB, HP 4310 (Черный 14,8 В, 5200 мА·ч) [24] => Разъемы &#8594; PJ001-2.5мм [25] => Аккумуляторы &#8594; HP Compaq B2000, LG LM70 (Черный, 11,1 В, 5200 мА·ч) [26] => Матрицы для ноутбуков &#8594; B133XW02 (1366*768,LED,40pin,справа снизу,глянцевая) [27] => Клавиатуры &#8594; HP Compaq 6730B 6735B (Черная) [28] => Разъемы &#8594; PJ058 [29] => Клавиатуры &#8594; HP Compaq Probook 4510S, 4710S (Черная, русская) ) [1] => Array ( [0] => / [1] => / [2] => / [3] => / [4] => / [5] => / [6] => / [7] => / [8] => / [9] => / [10] => / [11] => / [12] => / [13] => / [14] => / [15] => / [16] => / [17] => / [18] => / [19] => / [20] => / [21] => / [22] => / [23] => / [24] => / [25] => / [26] => / [27] => / [28] => / [29] => / ) [2] => Array ( [0] => klaviatury [1] => klaviatury [2] => klaviatury [3] => akkumulyatory [4] => matricy-dlya-noytbukov [5] => blokipitaniya [6] => klaviatury [7] => klaviatury [8] => razemy/razemypitaniya [9] => klaviatury [10] => klaviatury [11] => klaviatury [12] => matricy-dlya-noytbukov [13] => akkumulyatory [14] => perehodniki [15] => blokipitaniya [16] => klaviatury [17] => klaviatury [18] => razemy/razemypitaniya [19] => klaviatury [20] => klaviatury [21] => akkumulyatory [22] => matricy-dlya-noytbukov [23] => akkumulyatory [24] => razemy/razemypitaniya [25] => akkumulyatory [26] => matricy-dlya-noytbukov [27] => klaviatury [28] => razemy/razemypitaniya [29] => klaviatury ) [3] => Array ( [0] => /HP_Mini_1000_259 [1] => /HP_Compaq_CQ60_386 [2] => /HP_Pavilion_DV7-7000_602 [3] => /Dell_Inspiron_1525_182 [4] => /LTN160AT06_U04_320 [5] => /Toshiba_462 [6] => /HP_Mini_1103_210-2000_series_647 [7] => /HP_Compaq_6530B_6535B_248 [8] => /PJ045-1_65mm_346 [9] => /HP_Pavilion_DV6-6000_536 [10] => /HP_Pavilion_DV4000_260 [11] => /HP_Compaq_CQ61_387 [12] => /CLAA101NC05_606 [13] => /HP_DV2000_184 [14] => /perehodnik_CCFL-LED_dlya_matrits_15_6_universalnyy_325 [15] => /Sony_463 [16] => /HP_Compaq_Presario_CQ72_G72_672 [17] => /HP_Compaq_6530S_6730S_6531S_CQ610_249 [18] => /PJ048-1_65mm_347 [19] => /HP_Pavilion_DV7-1000_537 [20] => /HP_Pavilion_DV5-1000_261 [21] => /HP_6720_6720s_396 [22] => /LP154WX5_607 [23] => /HP_4210HB_HP_4310_187 [24] => /PJ001-2_5mm_326 [25] => /HP_Compaq_B2000_LG_LM70_473 [26] => /B133XW02_674 [27] => /HP_Compaq_6730B_6735B_250 [28] => /PJ058_348 [29] => /HP_Compaq_Probook_4510S_4710S_538 ) [4] => Array ( [0] => HP Mini 1000 (Черная) [1] => HP Compaq CQ60 (Черная) [2] => HP Pavilion DV7-7000 (Черная, русская) [3] => Dell Inspiron 1525 (Черный, 11,1 В, 5200 мА·ч) [4] => LTN160AT06 U04 (1366*768,LED,40pin,справа снизу,глянцeвая) [5] => Toshiba (Черный, 19V-3.95A, 5.5х2.5mm) [6] => HP Mini 1103, 210-2000 series (Черная, русская) [7] => HP Compaq 6530B, 6535B (Черная) [8] => PJ045-1.65мм [9] => HP Pavilion DV6-6000 (Черная, русская) [10] => HP Pavilion DV4000 (Черная) [11] => HP Compaq CQ61 (Черная) [12] => CLAA101NC05 (1024*600,LED,40pin,слева снизу,матовая) [13] => HP DV2000 (Черный, 10,8 В, 5200 мА·ч) [14] => переходник CCFL-LED для матриц 15.6" универсальный [15] => Sony (Черный, 19.5V-4.7A, 6.0x4.4mm с иглой) [16] => HP Compaq Presario CQ72 G72 (Черная, русская) [17] => HP Compaq 6530S, 6730S, 6531S, CQ610 (Черная) [18] => PJ048-1.65мм [19] => HP Pavilion DV7-1000 (Серебряная, русская) [20] => HP Pavilion DV5-1000 (Серебряная) [21] => HP 6720, 6720s (Черный, 10,8 В, 5200 мА·ч) [22] => LP154WX5 (TL)(C1) (1280*800,CCFL,30pin,справа сверху,глянцeвая) [23] => HP 4210HB, HP 4310 (Черный 14,8 В, 5200 мА·ч) [24] => PJ001-2.5мм [25] => HP Compaq B2000, LG LM70 (Черный, 11,1 В, 5200 мА·ч) [26] => B133XW02 (1366*768,LED,40pin,справа снизу,глянцевая) [27] => HP Compaq 6730B 6735B (Черная) [28] => PJ058 [29] => HP Compaq Probook 4510S, 4710S (Черная, русская) ) )
 
Половина ссылками идет, потом массив сбивается видимо ((
 

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 23:46 16-03-2014 | Исправлено: usertum, 23:48 16-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum

Цитата:
Стало  

ну, а вы что хотите вытащить ?)  
обсуждение регулярок - в указанной выше теме.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:48 16-03-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все вопрос снят, разобрался с выводом информации из массива циклом )

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 23:51 16-03-2014 | Исправлено: usertum, 09:50 17-03-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все отлично таблицу и форму сделал, но заметил разницу в выдаче если написать hp dv5 на сайте то будет 5 вариантов, тогда как у меня больше 30.  Что бы запрос отработал корректно нужно отправить его от меня вида "HP%20DV5" из формы поиска, что не есть гуд и вообще..
 
ps разобрался, на сайте система удаляет все пробелы в запросе, решил функцией str_replace(" ","",)

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 15:35 17-03-2014 | Исправлено: usertum, 15:39 17-03-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток опять. На доноре изменили страницу шас скрипт не стал показывать товары со статусом "транзит". + наш сайт перешел на Windows-1251 из за этого добавилось немного порнографии в вывод в виде перекодировки. Подскажите пожалуйста как исправить по статусу транизит.
 
 
<?require
($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Каталог матриц")
?>
 
 
<?php
$model = $_GET["model"];
$page = $_GET["page"];
 
if ($page == Null) {
$page = 0;
}
 
//header('Content-Type: text/html; charset=UTF-8');
set_time_limit (120);
?>
 
<form name="search" action="http://portal.local/apps/matrix/index.php" method="get">
 
<input name="model" type="text" value="<?php echo $model; ?>">
<input name="page" type="hidden" value="1">
 
<input type="submit" value="Поиск">
<br><small>например: Введите модель ноутбука или P/N детали</small>
 
</form>
 
<br>
<br>
 
 
 
<?php
 
$model = str_replace(" ","",$model);
 
 
  $cl2 = curl_init();
  curl_setopt($cl2, CURLOPT_URL, 'http://nb-plus.ru/index.php?route=product/search&filter_name='.$model.'&page='.$page.'');
  curl_setopt($cl2, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($cl2, CURLOPT_HEADER, 0);
  curl_setopt($cl2, CURLOPT_POST, 1);
  curl_setopt($cl2, CURLOPT_POSTFIELDS, 'http://nb-plus.ru/index.php?route=product/search&filter_name='.$model.'&page='.$page.'');
  curl_setopt($cl2, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');
  curl_setopt($cl2, CURLOPT_CONNECTTIMEOUT, 60); // таймаут соединения
  curl_setopt($cl2, CURLOPT_TIMEOUT, 60);        // таймаут ответа
  curl_setopt($cl2, CURLOPT_REFERER, 'http://nb-plus.ru/'); // Подделываем значение - откуда пришли данные.
  curl_setopt($cl2, CURLOPT_MAXREDIRS, 10);       // останавливаться после 10-ого редиректа
  $result = curl_exec($cl2);
  curl_close($cl2);
 
$p1=strpos($result,"<span>Поиск</span></a>");
$p2=strpos($result,"<div class=\"pagination\">");
$result = substr($result,$p1,$p2-$p1);
 
preg_match_all('/<div class="name">\s+<strong>(?<type>[^<>]+)<.*<a href="(?<url>[^"]+)">(?<name>[^<>]+)<.*<div class="alice"><[^<>]+>(?<available>[^<>]+)<.*<div class="price-box">(?<price>[^<>]+)</Uuis', $result, $find);
 
 
print "<table width=\"100%\" border=\"0\">\n";
print "<tr>\n";
print "<td width=\"7%\" bgcolor=\"#E0E0E0\">Категория</td>\n";
print "<td width=\"20%\" bgcolor=\"#E0E0E0\">Модель</td>\n";
print "<td width=\"5%\" bgcolor=\"#E0E0E0\">Наличие</td>\n";
print "<td width=\"5%\" bgcolor=\"#E0E0E0\">Стоимость</td>\n";
print "</tr>\n";
 
$i=0;
$b = count($find["type"]);
 
do {
 
echo"<tr>";
echo"<td>"; echo iconv('UTF-8','Windows-1251//IGNORE', $find["type"][$i]);            echo"</td>";
 
//Добавляем ссылки на описание
$url = $find["url"][$i];
$name = $find["name"][$i];
$name = iconv('UTF-8','Windows-1251//IGNORE', $name); //Чтоб на 1251 кодировке работало
$available = $find["available"][$i];
$available = iconv('UTF-8','Windows-1251//IGNORE', $available); //Чтоб на 1251 кодировке работало
$url = str_replace(".html","",$url);
$url = str_replace("nb-plus.ru/","portal.local/apps/matrix/details.php?details=",$url);
echo"<td><a href=\"$url\" target=\"_blank\">$name</a></td>";
echo"<td>"; echo $available;     echo"</td>";
$price = $find["price"][$i];
$procent = ($price*20) / 100;
$price = $price+$procent;
 
echo"<td>"; echo $price;        echo" руб.</td>";
echo"</tr>";
 
    $i++;
 
    } while ($i<$b);
 
 
print "</table> \n";
 
 
 
if ($page > "1") {
$old_page = $page - 1;
echo "<br><a href=\"http://portal.local/apps/matrix/index.php?model=$model&page=$old_page\">Вернуться назад</a>";
}
 
//Показываем ссылки если стр больше или 30
if ($page <= "30") {
$next_nepage = $page + 1;
echo "<br><a href=\"http://portal.local/apps/matrix/index.php?model=$model&page=$next_nepage\">Следующая страница</a>";
}
 
?>
 
<br>
<br>
<br>
 
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 14:58 02-11-2014 | Исправлено: usertum, 15:00 02-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum
пользоваться регулярками для парсинга html кода - зло.
нужно использовать DOMdocument

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 19:54 03-11-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста как старый код актуализировать...

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 18:09 27-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum

Цитата:
наш сайт перешел на Windows-1251

зря
 
перекодируйте целиком всю подготоволенную страницу, зачем по частям то?
 
более того, когда просите такие вещи - указывайте конкретно используемые параметры, какой результат получился и какой ожидается.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 23:52 27-11-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Выше скрипт выводит все ок, но стал терять позиции со статусом транзит.

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 15:57 28-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum

Цитата:
стал терять позиции со статусом транзит

Вы предлагаете искать их методом тыка??

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 19:53 28-11-2014 | Исправлено: Mavrikii, 19:54 28-11-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По регулярке, http://nb-plus.ru/index.php?route=product/search&filter_name=hp при таком URL в скрипт, он теряет (пропускает) позицию со статусом Транзит.

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 11:39 29-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum
я вам приведу часть, как получить значения, а дальше сами доделайте

Код:
<?php  
$model = $_GET["model"];  
$page = $_GET["page"];  
 
if ($page == Null) {  
$page = 0;  
}  
 
set_time_limit (120);  
?>  
 
<form name="search" action="" method="get">  
 
<input name="model" type="text" value="<?php echo htmlentities($model); ?>">  
<input name="page" type="hidden" value="1">  
 
<input type="submit" value="Поиск">  
<br><small>например: Введите модель ноутбука или P/N детали</small>  
 
</form>  
 
<br>  
<br>  
<?php  
$model = str_replace(" ","",$model);  
 
$cl2 = curl_init();  
curl_setopt($cl2, CURLOPT_URL, 'http://nb-plus.ru/index.php?route=product/search&filter_name='.urlencode($model).'&page='.intval($page).'');  
curl_setopt($cl2, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($cl2, CURLOPT_HEADER, 0);  
curl_setopt($cl2, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');  
curl_setopt($cl2, CURLOPT_CONNECTTIMEOUT, 60); // таймаут соединения  
curl_setopt($cl2, CURLOPT_TIMEOUT, 60);        // таймаут ответа  
curl_setopt($cl2, CURLOPT_REFERER, 'http://nb-plus.ru/'); // Подделываем значение - откуда пришли данные.  
curl_setopt($cl2, CURLOPT_MAXREDIRS, 10);       // останавливаться после 10-ого редиректа  
$result = curl_exec($cl2);  
curl_close($cl2);  
   
print "<table width=\"100%\" border=\"0\">\n";  
print "<tr>\n";  
print "<td width=\"7%\" bgcolor=\"#E0E0E0\">Категория</td>\n";  
print "<td width=\"20%\" bgcolor=\"#E0E0E0\">Модель</td>\n";  
print "<td width=\"5%\" bgcolor=\"#E0E0E0\">Наличие</td>\n";  
print "<td width=\"5%\" bgcolor=\"#E0E0E0\">Стоимость</td>\n";  
print "</tr>\n";  
 
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($result);
$xpath = new DOMXPath($doc);
$list = $xpath->query('//div[@class="product-list"]/div');
foreach($list as $item)
{    
   $d = $xpath->query('.//div[@class="name"]', $item)->item(0);
   $category = $d->getElementsByTagName('strong')->item(0)->textContent;  
   $l = $d->getElementsByTagName('a')->item(0);
   $name = $l->textContent;
   $url  = $l->getAttribute('href');
 
   $d = $xpath->query('.//div[@class="alice"]', $item)->item(0);
   $available = $d->textContent;
   
   $d = $xpath->query('.//div[@class="price-box"]', $item)->item(0);
   $price = $d->textContent;    
   
   // ваш код
}

 
обратите внимание на санирование некоторых переменных

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 08:58 30-11-2014 | Исправлено: Mavrikii, 08:58 30-11-2014
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На windows скрипт работает нормально, а вот когда копирую на сервер там проблемы с кодировкой.  
 
$category = iconv("utf-8", "windows-1251", "$category");
$name = iconv("utf-8", "windows-1251", "$name");
$available = iconv("utf-8", "windows-1251", "$available");
$price = iconv("utf-8", "windows-1251", "$price");
 
Notice: iconv() [function.iconv]: Detected an illegal character in input string in
 
Добавлял и игноре и транслит все равно иероглифы. Подскажите пожалуйста какие еше есть варианты... Спасибо.

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 17:05 16-01-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum

Цитата:
и игноре

он как раз убирает вывод notice и продолжает дальше преобразовывать
 

Цитата:
все равно иероглифы.  

а заголовки для страницы какие выводите?

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 21:56 16-01-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Парсер страницы и запись в массив


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru