| |
|
|
| | подскажите как можно осуществить контроль над парсингом ?
дело все в том , что скрипт парсит при каждом вызове по разному , от чего это зависит , и как это можно контролировать ?????? | |
| |
|
|
| |
|
|
| |
для: dima2207
(15.03.2007 в 18:33)
| | | Значит меняются входные данные.
Без скрипта вообще в принципе ничего сказать нельзя. | |
| |
|
|
| |
|
|
| |
для: Ziq
(15.03.2007 в 19:26)
| | | сервер с которого он получает инфу вроде-бы не мертвый ,не пойму тогда в чем дело , раз на раз не приходится , может все 55 стр. отпарсить а может и совсем не не много где-то 25-35 !!! почему ??? алгоритм ведь верный !!!
<?
set_time_limit(0);
$replace = array (" ",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
require_once("config.php");
$query = 'TRUNCATE TABLE `dbh1`';
if(!mysql_query($query)) exit(mysql_error());
for ($j=1 ; $j < 55 ; $j++)
{
$host = "www.m.ru";
$path = "/m3_lists/".$j.".shtml";
$buffer = getdata($host, $path);
//============================================
$pattern = '#<a href="[^"]+">(.*?)</a><BR>#is';
preg_match_all($pattern, $buffer, $matches);
$LinkRegEx = "#<a[^>]*href=['\"]?([^\"'\s>]+)['\"]?[^>]*>#is";
preg_match_all($LinkRegEx, $buffer, $matches1);
//------------------------------------------------
//for ($pz=61; $pz<count($matches[1]);$pz++)
for ($p=1; $p<count($matches[1]);$p++)
{
$text_arr[$p] = $matches[1][$p]."\r\n";
//==========================================================================
$text[$p] = mysql_escape_string($text_arr[$p]);
$text1[$p] = mysql_escape_string($matches1[1][$p]);
$query = "INSERT INTO dbh1 VALUES('".$p."','".$text[$p]."','".$matches1[1][$p+61]."')";
if(!mysql_query($query)) exit(mysql_error());
print ". ";
}
}
$search = array ("'<script[^>]*?>.*?</script>'si",
"'<[\/\!]*?[^<>]*?>'si",
"'([\r\n])[\s]+'",
"'&(quot|#34);'i",
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e");
function getdata($host, $path)
{
$buffer = true;
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp) {
return false;
} else {
$out = "GET $path HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Referer: $host$path\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
$out .= "Connection: Close\r\n";
$out .= "\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$buffer .= fgets($fp, 1024);
}
fclose($fp);
}
return $buffer;
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: dima2207
(15.03.2007 в 23:25)
| | | Там может стоять защита от многократного обращения к страницам сайта за определенный промежуток времени с одного IP. Возможно, удаленный сервер подвисает от столь ненормальной активности.
В любом случае, непонятно, зачем Вам каждый раз скачивать эти 55 страниц. | |
| |
|
|
| |
|
|
| |
для: dima2207
(15.03.2007 в 23:25)
| | | Проблема, скорее всего, из разряда этих: http://softtime.ru/forum/read.php?id_forum=1&id_theme=34405
Вместо HTTP/1.1 используйте HTTP/1.0. | |
| |
|
|
| |
|
|
| |
для: Саня
(16.03.2007 в 00:05)
| | | Неа , все равно скрипт упорно парсит только половину страниц , а мне надо что-бы он хоть раз в сутки мог отпарсить все 55 страниц !!! | |
| |
|
|
| |
автор: Bronepoez[) (16.03.2007 в 07:30) |
|
| |
для: dima2207
(16.03.2007 в 01:42)
| | | Меняй прокси, ставь задержки между запросами небольшую паузу. | |
| |
|
|