|
|
|
| Ребят помогите с кодом для грабера, очень нужно:
пройтись по сайту, узнать название (оно выделено на сайте жирным) узнать есть ли такой у меня в базе, если нет = брать инфу, если есть идти по линкам дальше.
в частности не могу придумать рег. выражения для того, чтоб забрать, например, отсюда
www.tophotels.ru/main/hotel/al17221/ название и описание.
надеюсь на вашу помощь | |
|
|
|
|
|
|
|
для: 27
(29.11.2007 в 02:14)
| | как то так
<?php
$t=file_get_contents("http://www.tophotels.ru/main/hotel/al17221/");
preg_match("#<h1[^>]+>(.+?)</h1>#is",$t,$out);
print $out[1]."<br><br>";
preg_match("#<td class=c2.+?<p><strong>(.+?)</td>#is",$t,$out1);
print $out1[1];
?>
|
| |
|
|
|
|
|
|
|
для: Faraon
(29.11.2007 в 09:34)
| | спасибо, за помощь! | |
|
|
|
|
|
|
|
для: 27
(29.11.2007 в 02:14)
| | Тепер я захожу на главную и получаю список страниц - стран, по которым нужно пройтись:
<?php
$t = file_get_contents("http://www.tophotels.ru/");
preg_match("#<td class=f11.+?(.+?)</td>#is", $t, $out);
print str_replace("style=\"border:1px solid #f0f0f0\">", "", $out[1]);
?>
|
а как по ним пройтись и как забрать контент с них если нужно только название отеля и курорт? | |
|
|
|
|
|
|
|
для: 27
(29.11.2007 в 13:35)
| | Такой подойдет?
<?php
set_time_limit(0);
$t = file_get_contents("http://www.tophotels.ru/");
preg_match_all("#<option value=(.+?)>(.+?)</option>#is", $t, $out);
for($i=1;$i<count($out[1]);$i++){
print "<b>".$out[2][$i]."</b><br>";
$tt=file_get_contents("http://www.tophotels.ru/main/hotels/".str_replace('"',"",$out[1][$i]));
preg_match_all("#<tr class.+?<a[^>]+>(.+?)</a>.+?<td.+?>(.+?)</td>#is", $tt, $out1);
for($j=1;$j<count($out1[1]);$j++){
print "Отель - ".$out1[1][$i]." | Курорт - ".$out1[2][$i]."<br>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Faraon
(29.11.2007 в 15:28)
| | почти, скрипт читает повторно одну и туже запись, + мне нужен будет линк на описание, чтоб следующий кусок зашел и забрал его. | |
|
|
|
|
|
|
|
для: 27
(29.11.2007 в 16:10)
| | Здесь я опечатался
print "Отель - ".$out1[1][$i]." | Курорт - ".$out1[2][$i]."<br>";
|
не $i a $j | |
|
|
|
|
|
|
|
для: Faraon
(29.11.2007 в 16:25)
| | гуд, пасиб | |
|
|
|
|
|
|
|
для: 27
(29.11.2007 в 16:43)
| | С ссылками
<?php
set_time_limit(0);
$t = file_get_contents("http://www.tophotels.ru/");
preg_match_all("#<option value=(.+?)>(.+?)</option>#is", $t, $out);
for($i=1;$i<count($out[1]);$i++){
print "<b>".$out[2][$i]."</b><br>";
$tt=file_get_contents("http://www.tophotels.ru/main/hotels/".str_replace('"',"",$out[1][$i]));
preg_match_all("#<tr class.+?<a href=\"(.+?)\" title=\"[^>]+\">(.+?)</a>.+?<td.+?>(.+?)</td>#is", $tt, $out1);
for($j=1;$j<count($out1[2]);$j++){
print "<a href=http://www.tophotels.ru".$out1[1][$j].">Отель - ".$out1[2][$j]."</a> | Курорт - ".$out1[3][$j]."<br>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: 27
(29.11.2007 в 02:14)
| | С этим разобрался, теперь не хочу, чтоб ip моего сервера поместили в бан лист, как этого избежать, помимо того, что инфу буду грабить не одним махом....?
тут можно применить proxy, да? а как? =) | |
|
|
|
|
|
|
|
для: 27
(29.11.2007 в 18:40)
| | А там что бан-лист есть? | |
|
|
|
|
|
|
|
для: Faraon
(29.11.2007 в 20:44)
| | да | |
|
|
|
|
|
|
|
для: 27
(30.11.2007 в 19:56)
| | Итересно а прокси Вы собрались как применять? Вы из дома в все это хотите сделать или с локальной сети фирмы ? | |
|
|
|
|
|
|
|
для: Faraon
(01.12.2007 в 00:04)
| | из дома. | |
|
|
|
|
|
|
|
для: 27
(01.12.2007 в 01:40)
| | А тогда прокси тут причем? Или Вы являетесь администратором сети провайдера? | |
|
|
|
|
|
|
|
для: 27
(30.11.2007 в 19:56)
| | у знакомого спрашивал как можно не попасть в бан, он ответил коротко: "прокси юзай"
скрипт на сервере запускаю через крон. | |
|
|
|
|
|
|
|
для: 27
(01.12.2007 в 01:57)
| | Cron на хостингах по разному настраивается, в зависимости от хостинга. Вам надо уточнить в службе поддержки как именно у них настраивается
P.S. мой последний скрипт вам помог? | |
|
|
|
|
|
|
|
для: Faraon
(01.12.2007 в 02:03)
| | через cpanel, с ним всё в порядке он работает.
думаю, что крон не поможет избежать блокировки...
что может помочь? просто там база большая, а взять её нужно единожды.
страницы для выдерки я и сам догадался, но если бы без Вашей помощи, то х*й я сам бы справился) | |
|
|
|
|
|
|
|
для: 27
(01.12.2007 в 02:06)
| | Бан по какому принципу идет?
По количеству вхождений в определенный момент времени с одного ip?
Или как? | |
|
|
|
|
|
|
|
для: Faraon
(01.12.2007 в 02:25)
| | знал бы прикуп, жил бы в сочи %) | |
|
|
|
|
|
|
|
для: 27
(01.12.2007 в 02:29)
| | Здесь только один вариант можно попробовать, разбить запросы( не все сразу а постепенно), но это тоже может не помочь ;) | |
|
|
|
|
|
|
|
для: Faraon
(01.12.2007 в 02:32)
| | да, это самое первое, что пришло на ум, за ночь коммунистический скрипт забрал около 5 тыс. записей, база порядка 50 тыс.....
Благодарю за помощь, очень выручили. | |
|
|
|