|
|
|
| Здравствуйте!
например, в граберах применяется переменная $_SERVER['QUERY_STRING']
её можно применять для того, чтобы грабить не только страницу page.php, но и всё что передается методом get через неё, т.е. ссылки вида page.php?act=str и т.д. Например: $url=file_get_contents('http://site.ru/page.php?$QUERY_STRING);
Собственно вопрос: можно ли как то сграбить страницы вида /papka/page2.php и т.д, делая запрос только к page.php. т. е ссылки не имеют вид page.php?act=str .Или одновременно сграбить все страницы в папке. Просто таких страниц оч. много и невозможно обращаться к каждой...
Есть такой вариант:
<?php
$fg=@file_get_contents("http://site.ru/$link")
$ex=explode("/",$link);
if ($link!="")
{
$fg=str_replace("<a href=\"","<a href=\"index.php?link=$ex[0]",$fg);
}
else
{
$fg=str_replace("<a href=\"","<a href=\"index.php?link=",$fg);
?>
|
но в моем случае так не получается... | |
|
|
|
|
|
|
|
для: BaSh
(19.06.2007 в 20:24)
| | Так как все ссылки страницы имеют вид "something.php?param" то есть смысл их заменять на что-то типа
"graber.php?something.php|param"
graber.php = файл вашего грабера
something.php = удаленный файл
param = параметры запроса | |
|
|
|
|
|
|
|
для: Disable
(19.06.2007 в 21:01)
| | Disable, спасибо, но такой вариант не работает... показывает пустую страницу... и у меня там ссылки вида /papka/page.html, /papka/page2.html и т.д.
По-моему безвыходная ситуация.... | |
|
|
|
|
|
|
|
для: BaSh
(19.06.2007 в 22:01)
| | Ничего подобного, надо просто анализировать что запрашивается в file_get_contents() и грамотно регулярку для замены адреса составить. | |
|
|
|
|
|
|
|
для: Disable
(19.06.2007 в 22:11)
| | вообщем вот мой скрипт:
form.php
$abonent = @$_POST["abonent"];
$fname = @$_POST["fname"];
$sname = @$_POST["sname"];
$phone = @$_POST["phone"];
$params="?firstName=$fname&middleName=$sname&phone=$phone&abonent=$abonent&firstName=$fname&middleName=$sname&phone=$phone";
$headers = array("Accept: application/x-www-form-urlencoded */*",
"Accept-Language: ru",
"Proxy-Connection: Keep-Alive",
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4");
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.nomer.org/moskva/$link");
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_REFERER , 'http://www.nomer.org/moskva/');
$output=curl_exec($ch);
/* не рабочий вариант
$ex=@explode(" ",$link);
if ($link!="")
{
$output=@str_replace("<a href=","<a href=form.php?link=$ex[0]",$output);
}
else
{
$output=@str_replace("<a href=","<a href=form.php?link=",$output);
*/
echo $output;
|
разбор данных страницы не стал писать.
и index.php
<?php
echo'<form action="form.php" method="post">
Фамилия <input id = "myFioInput" text name=abonent size="12">
Имя
<input text name=fname size="12">
Отчество <input text name=sname size="12">
тел <input text name=phone size="8" maxlength="8">
<input type="submit" value=" Найти " style="color: #003366; background-color:#cccccc" >
</font></form><br>';
?>
|
И собственно, результат поиска зачастую выходит на несколько страниц. На одной странице показывается 10 человек, а следующая страница имеет адрес вида /moskva/page.html
Вот в чем вся загвоздка. | |
|
|
|
|
|
|
|
для: BaSh
(19.06.2007 в 22:30)
| |
<?php
if (!empty($_SERVER['QUERY_STRING']))
{
$headers = array("Accept: application/x-www-form-urlencoded */*",
"Accept-Language: ru",
"Proxy-Connection: Keep-Alive",
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4");
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.nomer.org/moskva/'.$_SERVER['QUERY_STRING']);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_REFERER , 'http://www.nomer.org/moskva/');
$output=curl_exec($ch);
}
if (!empty($_POST))
{
$abonent = @$_POST["abonent"];
$fname = @$_POST["fname"];
$sname = @$_POST["sname"];
$phone = @$_POST["phone"];
$params="?firstName=$fname&middleName=$sname&phone=$phone&abonent=$abonent&firstName=$fname&middleName=$sname&phone=$phone";
$headers = array("Accept: application/x-www-form-urlencoded */*",
"Accept-Language: ru",
"Proxy-Connection: Keep-Alive",
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4");
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.nomer.org/moskva/");
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_REFERER , 'http://www.nomer.org/moskva/');
$output=curl_exec($ch);
}
$output=preg_replace('|http://www.nomer.org/moskva/([^\.]+\.html)|sU','index.php?\\1',$output);
echo $output;
echo'<form action="index.php" method="post">
Фамилия <input id = "myFioInput" text name=abonent size="12">
Имя
<input text name=fname size="12">
Отчество <input text name=sname size="12">
тел <input text name=phone size="8" maxlength="8">
<input type="submit" value=" Найти " style="color: #003366; background-color:#cccccc" >
</font></form><br>';
?>
|
ну как-то так.
вырежете все лишнее (рабочая форма внизу) | |
|
|
|
|
|
|
|
для: Disable
(19.06.2007 в 23:08)
| | ОГРОМНОЕ СПАСИБО! Всё работает!
Кстате curl' ом грабить страницы я тоже научился, благодаря вашему примеру с темы ниже.
БЛАГОДАРЮ! | |
|
|
|
|
|
|
|
для: BaSh
(19.06.2007 в 23:22)
| | Блин, что я делаю :)
А сайтик интересный вы выбрали, правда много кого я там не нашел (по Питеру) | |
|
|
|