Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

граббер в php   Найти похожие ветки 

 
Evanescence   (2008-01-18 16:49) [0]

граблю с сайта, тамошний скрипт берет GET переменную и выдает результат, мой скрипт должен сохранить этот результат в мою базу. Значение переменной мой скрипт читает из файла. Если в этом файл только одна строка, то все нормально работает. Если больше - то выполнение скрипта длится на неопределенное время, а Apache занимает половину времени проца, но на базу ничего не добавляет. Надеюсь, обьяснил доходчиво... :)


 
Evanescence   (2008-01-18 16:50) [1]

<?
$lat=file("lat.txt");
$cyr=file("cyr.txt");
$source = file("123.txt");

$lat=explode("|",$lat[0]);
$cyr=explode("|",$cyr[0]);
mysql_pconnect("localhost","root","");
mysql_select_db("trans");

function lc($str){
global $lat, $cyr;
for ($i=0;$i<=41;$i++) $str=str_replace($lat[$i],$cyr[$i],$str);
return $str;
}

function cl($str){
global $lat, $cyr;
for ($i=0;$i<=41;$i++) $str=str_replace($cyr[$i],$lat[$i],$str);
return $str;
}

function translateword($word){
$cnt = "";
$tmp = "";
$host = "www.host.kz";
$path = "/index.php";
if (isset($word)) {
$word = strtolower(cl(urldecode($word)));
$path .= "?word=$word";
$fp = fsockopen($host,80,$errno,$errstr,30);
   if($fp){
 $headers = "GET $path HTTP/1.0\r\n";
 $headers .= "Host: $host\r\n";
 $headers .= "Accept: *\r\n";
 $headers .="Accept-Charset: utf-8\r\n";  // <<====
 $headers .= "Accept-Charset: *\r\n";
 $headers .= "Accept-Encoding: deflate\r\n";
 $headers .= "Accept-Language: ru\r\n";
 $headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.01\r\n\r\n";
 fwrite($fp,$headers);
 $text = "";
 while($text != "\r\n") $text = fgets($fp,128);
 while(!feof($fp)) $text .= fgets($fp,4096);
 fclose($fp);
}
$b = $text;
$b = explode("</p>",$b);
$b = $b[0];
$b = explode("<br/>",$b);
$cnt .= "".lc($word).":<br>";
if ($b[2]=="word $word") {$cnt .= "<ul><li>Soz tabilmadi</li></ul>";}
else {
 $cnt .= "<ul>";
       foreach($b as $i => $value) if ($i>1) {
  $cnt .= "<li>".lc($value)."</li>";
  $tmp .= $value."<br>";
  }
 $cnt .= "</ul>";
 if (add_to_base($word,$tmp)==1) $cnt .="ok<br>" ;
 }
}
return $cnt;
}

function add_to_base($soz,$tran){
$soz = lc($soz);
$result = mysql_query("SELECT id FROM trans WHERE soz="$soz"");
if (mysql_numrows($result)==0)
   {
$tran = str_replace("<бр>","<br>",lc($tran));
$result = mysql_query("INSERT INTO `trans` VALUES(NULL, "$soz","$tran")");
if (mysql_numrows($result)>0) $s=1; else $s=0;
return $s;
}
}

foreach($source as $uu => $bb)
{
echo translateword($bb);
}

?>


 
ketmar ©   (2008-01-18 17:57) [2]

Delphi не смогла скомпилировать.


 
_xxx_   (2008-01-18 18:00) [3]

$lat=explode("|",$lat[0]);
$cyr=explode("|",$cyr[0]);

лучше заменить на
$lat=explode("|",trim($lat[0]));
$cyr=explode("|",trim($cyr[0]));

ибо, в случае многострочного файла, $lat[0] и $cyr[0] последними символами будут иметь знаки переноса (\r\n), соответственно эти символы вернет функция lc(). Дальше разбираться не стал, но возможно в этом причина.


 
_xxx_   (2008-01-18 18:04) [4]

и здесь тоже кстати
echo translateword(trim($bb));


 
Evanescence   (2008-01-18 18:08) [5]

> echo translateword(trim($bb));

спасибо большое, это помогло )))


 
Anatoly Podgoretsky ©   (2008-01-19 23:38) [6]

> Evanescence  (18.01.2008 16:49:00)  [0]

> Надеюсь, обьяснил доходчиво... :)

Очень, пошел за поллитрой.



Страницы: 1 вся ветка

Текущий архив: 2008.02.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
2-1200995699
fics
2008-01-22 12:54
2008.02.24
Динимические массивы


15-1201073995
vajo
2008-01-23 10:39
2008.02.24
Как на ноутбуке переустановить Виндовс?


15-1201244935
oldman
2008-01-25 10:08
2008.02.24
Татьянин день


9-1165141128
DRUGOI ilya
2006-12-03 13:18
2008.02.24
человек и ODE


2-1201887760
Igora
2008-02-01 20:42
2008.02.24
Помогите кто знает, как сделать