Screamer, ну форум я парсить не буду. И функция будет использоваться всегда на первой странице, и только раз.
Так что она вполне подходит.
UA95 (01.07.2013 / 14:42)Та нет. Я думаю писать по нему статью или нет? Думаю что и комментариев хватит.
Гг,продавать будет.
ValekS (01.07.2013 / 14:47)Ели даш код, то начнется настоящий хаос как с ногомячом..тоесть все будут воровать один и тот же текст..и ситуевина осложнится еще и тем что время мона будет написать какое угодно..тоесть доказать что текст не украден станет очень проблематично. Если с грабеером мона справится, то парсер это зло..
Та нет. Я думаю писать по нему статью или нет? Думаю что и комментариев хватит.
Особенно если прочитать уже написанные 2 статьи.
mb_internal_encoding('UTF-8');
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'test';
$db_charset = 'utf-8';
include('koemysqli.php');
$mysqli = new KoeMysql($db_host, $db_user, $db_pass, $db_name, $db_charset);
function kcurl($url, $post='', $mode=array()) {
$defaultmode = array('charset' => 'utf-8', 'ssl' => 1, 'cookie' => 0, 'headers' => 0, 'useragent' => 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.229 Version/11.61');
foreach ($defaultmode as $k => $v) {
if (!isset($mode[$k]) ) {
$mode[$k] = $v;
}
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, $mode['headers']);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $mode['useragent']);
curl_setopt($ch, CURLOPT_ENCODING, $mode['charset']);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 200);
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if ($mode['cookie']) {
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
}
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if ($mode['ssl']) {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
}
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$data = kcurl('http://gts39.ru/rubric/');
preg_match_all('|<table cellspacing="0" cellpadding="0" border="0" class="main-section-list">(.*)</table>|sU', $data, $tab);
preg_match_all('|<a href="(.*)" title="(.*)">|isU', $tab[1][0], $names);
unset($names[0]);
$cnt = sizeof($names[1]);
$new_array = array();
$new_array2 = array();
for ($i=0; $i<$cnt; $i++) {
$new_array[] = $names[2][$i];
$new_array2[] = $names[1][$i];
}
for ($i2=0; $i2<$cnt; $i2++) {
$data_list = kcurl('http://gts39.ru' . $new_array2[$i2] . 'page/0/');
preg_match_all('|<div class="firm-item">(.*)</td>|sU', $data_list, $tab);
preg_match_all('|<div(.*)">(.*)</div>|sU', $tab[0][0], $inf);
$array_list = $inf[2];
array_pop($array_list);
array_shift($array_list);
$cnt_list = sizeof($array_list);
$arr = range(3, $cnt_list, 4);
for($i3=0; $i3<$cnt_list; $i3++) {
if (in_array($i3, $arr)) {
unset($array_list[$i3]);
}
}
$array_list = array_values($array_list);
$array_list = array_chunk($array_list, 3);
$cnt_list2 = sizeof($array_list);
$arr_link = array();
for($i4=0; $i4<$cnt_list2; $i4++) {
$arr_link[$i4] = explode('|', preg_replace(array('#<a href="(.*)"#isU', '#( title="(.*)">(.*)</a>)#isU'), array('$1', '|$2'), $array_list[$i4][0]));
}
unset($array_list);
$cnt_list3 = sizeof($arr_link);
for($i5=0; $i5<$cnt_list3; $i5++) {
$data_info = kcurl('http://gts39.ru' . $arr_link[$i5][0]);
preg_match_all('|<div class="firm-data">(.*)</a>|sU', $data_info, $tab2);
$array_info = explode('</div>', $tab2[1][0]);
if (preg_match('/http/i', $array_info[6])) {
$url = $array_info[6];
} else {
$url = '';
}
$new_array_info = array(trim(strip_tags($array_info[1])), trim(strip_tags($array_info[3])));
if (isset($url)) {
$url = trim(preg_replace(array('/<div><a target="_blank" rel="nofollow" href="/i', '/(">.*)/i'), '', $url));
}
$bd = array(mb_strtolower($new_array[$i2]), $arr_link[$i5][1], $new_array_info[0], $new_array_info[1], $url);
$sql = "insert into `spravka` (`cat`, `firm`, `adress`, `tel`, `site`) values (?, ?, ?, ?, ?)";
$res = $mysqli->sql($sql, $bd);
unset($url);
}
}
# Koenig (17.08.2013 / 03:22)За один раз?
кидаю парсер как пример, спарсил почти 20к записей