Пишу парсер. Работает медленно, но это не беда.
Вопрос: Почему не выводит сообщение об успехе в случаи 1-го успеха ? Именно 1-го
Вопрос: Почему он парой просто останавливается ?
Если это вам как-либо видно по коду, укажите на ошибки пожалуйста.
P.S. Не пинайте строго, учусь. И использую старые функции.
<?php
require_once 'libs/simple_html_dom.php';
$server = ini_get("mysql.default_host");
@mysql_connect($server, "u360508016_root", "********") or die();
mysql_select_db("u360508016_base");
mysql_set_charset("utf8");
$url = "http://minecraft.gamepedia.com/Minecraft_Wiki";
$i = 1;
do {
parser($url);
if ($i >= 2) {
$q = mysql_query("SELECT * FROM `indexing_link` WHERE `id`='" . $i . "'") or die();
$url = mysql_result($q, 0, 1);
}
$i++;
$q = mysql_query("SELECT * FROM `indexing_link` WHERE `id`='" . $i . "'") or die();
echo "SUCCESS! " . $i . "\n";
} while (@mysql_num_rows($q));
function parser($url)
{
$html = file_get_html($url);
/**
* Получаем все внутренние ссылки
*/
/*if ($html->innertext != '' and count($html->find('a'))) {
foreach ($html->find('a[href^=/] ') as $a) {
echo "<a href='http://minecraft.gamepedia.com" . $a->href . "'>" . $a->plaintext . "</a></br>";
}
}*/
/**
* Получаем пару title-описание основной ссылки
*/
$title = "sdasd";
/* $title = $title->plaintext;*/
$short = "zxcxzc";/*$html->find('#mw-content-text');
$short = $short->find('p', 0);
$short = $short->plaintext;*/
/**
* Пишем все внутренние ссылки в бд
*/
$link_id = mysql_query("SELECT * FROM `indexing_link` WHERE `url`='" . $url . "'") or die();
if (mysql_num_rows($link_id) == 0) {
mysql_query("INSERT INTO `indexing_link` (`url`, `title`, `short`) VALUES ('" . $url . "', '" . $title . "', '" . $short . "')") or die();
$link_id = mysql_query("SELECT * FROM `indexing_link` WHERE `url`='" . $url . "'") or die();
}
if ($html->innertext != '' and count($html->find('a'))) {
foreach ($html->find('a[href^=/] ') as $a) {
$q = mysql_query("SELECT * FROM `indexing_link` WHERE `url`='http://minecraft.gamepedia.com" . $a->href . "'") or die();
if (mysql_num_rows($q) == 0) {
mysql_query("INSERT INTO `indexing_link` (`url`) VALUES ('http://minecraft.gamepedia.com" . $a->href . "')") or die();
$link_id1 = mysql_query("SELECT * FROM `indexing_link` WHERE `url`='http://minecraft.gamepedia.com" . $a->href . "'") or die();
}
/**
* Пишем пару откуда-куда в бд
*/
if (@mysql_result($link_id1, 0, 0)) {
mysql_query("INSERT INTO `indexing_how_where` (`how`, `where`) VALUES ('" . mysql_result($link_id,
0, 0) . "', '" . mysql_result($link_id1, 0, 0) . "')") or die();
}
}
}
/**
* Получаем все текстовые блоки в html
*/
$plaintext = $html->plaintext;
/*echo $plaintext, "<br><br>";*/
/**
* Оставляем буквы латинского алфавита и пробелы
*/
$pattern = '/[A-Za-z]|[ \t]/';
preg_match_all($pattern, $plaintext, $matches);
foreach ($matches[0] as $key => $value) {
if ($value == " ") {
$matches[0][$key] = "\t";
}
}
$arr = array();
$flag = 0;
foreach ($matches[0] as $value) {
if ($value != "\t") {
$arr[] = $value;
$flag = 0;
} elseif ($flag == 0) {
$arr[] = " ";
$flag = 1;
}
}
$str = implode($arr);
$word = explode(" ", $str);
/**
* Пишем слова в бд и указываем ссылку
*/
foreach ($word as $value) {
$q = mysql_query("SELECT * FROM `indexing_word` WHERE `word`='" . $value . "'") or die();
if (mysql_num_rows($q) == 0) {
mysql_query("INSERT INTO `indexing_word` (`word`) VALUES ('" . $value . "')") or die();
$word_id = mysql_query("SELECT * FROM `indexing_word` WHERE `word`='" . $value . "'") or die();
}
/**
* Пишем пару слово-ссылка в бд
*/
if (@mysql_result($word_id, 0, 0)) {
mysql_query("INSERT INTO `indexing_link_word` (`word_id`, `link_id`) VALUES ('" . mysql_result($word_id,
0, 0) . "', '" . mysql_result($link_id, 0, 0) . "')") or die();
}
}
$html->clear();
unset($html);
}