|
|
|
| Есть сайт с каталогом автомашин не auto.ru этот то каталог я и хочу поместить у себя. Хозяину сайта отнюдь не станет худа от рекламы товара.
Вот я и думаю каким макаром это всё осуществить. Мож у кого есть идеи или сталкивался кто с этим или знает где об этом можно почитать поделитесь пожалуйста. Заранее спасибо. | |
|
|
|
|
|
|
|
для: sata
(07.04.2005 в 09:45)
| | Сервер, на котором будет выведена информация с auto.ru - на нем в каком режиме директива allow_url_fopen?
А вообще - тут понадобятся функции:
file_get_contents
strpos
substr
Это основное. Дополнительно (так как захочется переделать внешний вид выводимого):
str_replace
explode
Основная мысль такова - Нужно найти место, из переменной, содержимое которой получаем при помощи file_get_contents, с этого места можно все взять в другую переменную. Говоря проще:
$address="http://auto.ru";
$start="Камаз - самая маленькая машина, из когда-либо мной виденных...";
$site = file_get_contents($address,"r");
$a=substr($site,$start);
|
В этом случае, при print $a вы увидите сайт auto.ru, но только тот кусок, который начнется после содержимого в переменной $start. Тут уж будьте внимательны, что туда вводить.
Разумеется, при помощи strpos нужно найти позицию окончания блока, который вам нужен. Но это уже глубже. Поэксперементируйте с этими функциями.
Если allow_url_fopen отключена, то нужно чуть иным методом. | |
|
|
|
|
|
|
|
для: sata
(07.04.2005 в 09:45)
| | Посмотрите темы, а так же ссылки которые в них указаны
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3110
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3137
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3181
В них приводятся многочисленные примеры работы с регулярными выражениями, и получения информации с сайтов различной тематики: поисковых систем, каталогов, интернет игр и т.п. | |
|
|
|
|
|
|
|
для: cheops
(07.04.2005 в 11:26)
| | Страница с которого идёт попытка дёрнуть инфу называется http://crashescars.com/rus/top. Там мне надо на свой сайт слить таблицу каталога.
У важаемый cheops ссылки которые вы дали очень интересны, но мне недоконца понятно как же среди страницы в которой много таблиц вырезать именно эту.
Правда есть одна особенность эта таблица идёт с параметром border="1" возможно как то можно использовать это как отличие от остальных таблиц.
Заранее спасибо. А если поможите благодарность моя не будет знать границ. | |
|
|
|
|
|
|
|
для: sata
(07.04.2005 в 21:18)
| | Я так понял это тогда что то вроде этого получится ?
<?
$address="http://crashescars.com/rus/top";
$start="<table width="99%" cellpadding="0" cellspacing="0" border="1">";
$close="</table>";
$site = file_get_contents($address,"r");
$site_close = strpos($close,"r");
$a=substr($site,$start,$close);
print $a
?>
|
| |
|
|
|
|
|
|
|
для: sata
(07.04.2005 в 21:18)
| | Да нет это очень далеко... здесь нужно к стилям привязываться...
<?php
// Устанавливаем не ограниченное время выполнения скрипта
set_time_limit(0);
$page = file_get_contents("opr001Q5.htm");
$pattern = "#<font color=green> ([^<]+)<[^<]+<[^<]+<[^<]+<[^>]+>([^<]+)<br>[^<]+<strong>[^>]+>[^<]+<a href=\"([^\"]+)\">([^<]+)<[^<]+<[^<]+<[^<]+<[^>]+>([^<]+)<[^<]+<[^<]+<[^>]+>([^<]+)<[^<]+<[^<]+<[^>]+>([^<]+)<#iU";
preg_match_all($pattern,$page,$out,PREG_PATTERN_ORDER);
echo "<pre>";
print_r($out[1]); // Машины
print_r($out[2]); // Площадки
print_r($out[3]); // URL-лот
print_r($out[4]); // число-лот
print_r($out[5]); // VIN
print_r($out[6]); // Пробег
print_r($out[7]); // Тип повреждения
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.04.2005 в 22:16)
| | Я так понял вы залазили на сайт и смотрели а opr001Q5.htm это что тогда такое или это просто пример ? | |
|
|
|
|
|
|
|
для: sata
(07.04.2005 в 22:34)
| | А... его следует заменить на "http://crashescars.com/rus/top" - это я сохранил страницу на локальном диске - так отлаживать скрипт быстрее... | |
|
|
|
|
|
|
|
для: cheops
(07.04.2005 в 22:39)
| | Посмотрел скрипт локально а как зделать так чтобы это всё выводилось не массивом а в таблице как на сайте, а смысл как дёрнуть теперь понял спасибо
И можно чуть подробнее рассказать об этой строке
$pattern = "#<font color=green> ([^<]+)<[^<]+<[^<]+<[^<]+<[^>]+>([^<]+)<br>[^<]+<strong>[^>]+>[^<]+<a href=\"([^\"]+)\">([^<]+)<[^<]+<[^<]+<[^<]+<[^>]+>([^<]+)<[^<]+<[^<]+<[^>]+>([^<]+)<[^<]+<[^<]+<[^>]+>([^<]+)<#iU";
|
| |
|
|
|
|
|
|
|
для: sata
(07.04.2005 в 22:44)
| | Мое предложение такое:
<?set_time_limit(0);
$address="http://crashescars.com/rus/top";
echo("<base href=".$address.">");
$start='border="1">';
$close="</table>";
$site = file_get_contents($address,"r");
$start_pos = strpos($site,$start);
$site = substr($site,$start_pos+strlen($start));
$close_pos = strpos($site,$close);
$site = substr($site,$start,$close_pos+strlen($close));
?><table><?print $site;?></table><?
|
Тут вы и стиль собственной таблички легко переделаете... | |
|
|
|
|
|
|
|
для: sata
(07.04.2005 в 22:44)
| | Теперь следует восстановить таблицу из массивов, примерно следующимо образом
<?php
echo "<table>";
for($i = 0; $i < count($out[1]); $i++)
{
echo "<tr><td>".$out[1][$i]."</td><td>".$out[2][$i]."</td></tr>";
echo "<tr><td colspan=2><a href=".$out[3][$i].">".$out[4][$i]."</a></td></tr>";
echo "<tr><td colspan=2>".$out[5][$i]."</td></tr>";
echo "<tr><td colspan=2>".$out[6][$i]."</td></tr>";
echo "<tr><td colspan=2>".$out[7][$i]."</td></tr>";
}
echo "</table>";
?>
|
Страшная строка $pattern, вызывающая оторопь является регулярным выражением (подробнее можно почитать по ссылке в конце поста). Ищет оно соответствие элементу
<font color=green> 2001 MERCEDES BENZ ML320</font><br>
<strong>Площадка:</strong> SOMERVILLE<br>
<strong>Лот:</strong> <a href="http://crashescars.com/rus/search/~mode=show1~id=08687293">08687293</a><br>
<strong>VIN:</strong> 4JGAB54E71A<br>
<strong>Пробег:</strong> 65208 A<br>
<strong>Тип повреждения:</strong> пожар в салоне<
|
При этом части, помещённые в круглые скобки сохраняются в массиве $out, который является двумерным массивом. $out[0] - это массив из кусков HTML соответствующих всему регулярному выражению, $out[1] - соответствует первым круглым скобкам, $out[2] - вторым и т.д. Маневрируя между границами тэгов < и > и сохраняя нужные нам куски при помощи круглых скобок, мы можем получить массивы данных из которых легко построить свою собственную таблицу, со своим собственным дизайном.
http://www.softtime.ru/group/id_group=3 | |
|
|
|
|
|
|
|
для: cheops
(08.04.2005 в 09:47)
| | Спасибо всем очень помогли | |
|
|
|
|
|
|
|
для: sata
(08.04.2005 в 17:45)
| | Назрела тут аналогичная проблема но локально в всё нормально, а вот в инете не работает.
Есть страница https://www.iaai-bid.com/branchauctions.aspx?branch=722Защищёная SSL (поэтому мож и не пашет) на которой есть таблица вот она и не выдирается локально выдрал так
$address="https://www.iaai-bid.com/branchauctions.aspx?branch=722";
echo("<base href=".$address.">");
$start='id=auctionVehicles';
$close="</TABLE>";
$site = file_get_contents($address,"r");
$start_pos = strpos($site,$start);
$site = substr($site,$start_pos+strlen($start));
$close_pos = strpos($site,$close);
$site = substr($site,$start,$close_pos+strlen($close));
echo "<table ";
print $site;
echo "</table>";
|
Да кстати там карттинки есть как их вырезать и на линк лота нажать могут только авторизованные пользователи как авторизоваться без ведома юзера и вытащить информацию данного лота со следующей страницы при условии что эти страницы постоянно обновляются (добавляются новые лоты убираются старые)
Идея примерно такая выдирается страница вставляется к себе ---> пользователь кликает на линк, происходит авторизация на сервере ----->открывается страница с описанием лота. Вот примерная схема
Вот если отвеите хотя бы на что то огромное спасибо. | |
|
|
|
|
|
|
|
для: sata
(20.04.2005 в 11:37)
| | Давайте постепенно начнём: поставьте проверку на длину $site
<?php
if(strlen($site) == 0) exit("Чёрт, ничего не загрузилось");
?>
|
Срабатывает она при загрузке с защищённой страницы? Кстати доступ к защищённой странице закрыт паролем или нет? | |
|
|
|
|
|
|
|
для: cheops
(20.04.2005 в 12:45)
| | При проверке выводит строку Чёрт, ничего не загрузилось
Страница https://www.iaai-bid.com/branchauctions.aspx?branch=722
не защищена паролем | |
|
|
|
|
|
|
|
для: sata
(20.04.2005 в 14:38)
| | как открыть на чтение файл по https php-функцией fopen() и ей подобным? | |
|
|
|
|
|
|
|
для: sata
(20.04.2005 в 14:38)
| | А другие файлы с обычных страниц грузятся? Дело в том, что ряд хостингов запрещают загрузку файлов с удалённых машин из PHP-скриптов... | |
|
|
|
|
|
|
|
для: cheops
(20.04.2005 в 18:40)
| | Да всё работает вот тока с этим сайтом гемор при попытке выдрать таблицу с этой страници выдаёт
Notice: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in z:\home\autolegra.ru\www\catalog.php on line 183
Warning: file_get_contents(https://www.iaai-bid.com/branchauctions.aspx?branch=722): failed to open stream: No such file or directory in z:\home\autolegra.ru\www\catalog.php on line 183
|
С тех поддержкой поговорил сказали что https у них поддерживается в смысле возможна подгрузка но фиг знает мож друг друга непоняли | |
|
|
|
|
|
|
|
для: sata
(20.04.2005 в 19:34)
| | А вы тех.поддержке эти строчки отсылали - ведь PHP как раз на php.ini ругается, а у вас доступа к нему нет. | |
|
|
|