Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Вниз

граббер в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.052 c
15-1201277000
Petr V. Abramov
2008-01-25 19:03
2008.02.24
TWO_PHASE_COMMIT в шлюзе Oracle -> MSSQL


15-1200719316
max
2008-01-19 08:08
2008.02.24
TASM32 v5.0


15-1201184222
AntonUSAnoV
2008-01-24 17:17
2008.02.24
как оценить свой труд ?


2-1201488326
vegarulez
2008-01-28 05:45
2008.02.24
Вопрос про клозет датасет


2-1201764728
lead-in
2008-01-31 10:32
2008.02.24
трабла с кодировкой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский