помогите написать парсер

flat73

Постоялец
Регистрация
15 Авг 2008
Сообщения
57
Реакции
2
Добрый день. Нужно вытаскивать информацию со страниц и сохранять в определеном виде в текстовом документе.
Ссылки по которым должен пройтись парсер будуд лежать в xls в таком виде:
Таблица А
ссылка
Таблица Б
номер товара
Таблица С
определенное число
к примеру вот ссылка на товар
Парсить прийдется только с одного сайта
С этой странички надо вытащить инфу:
S (+ 4 в наличии)
M (+ 4 в наличии)
L (+ 4 в наличии)
XL (+ 4 в наличии)
XXL (+ 4 в наличии)
далее он удаляет не нужное т.е. удаляет (+ 4 в наличии), на некоторых страницах надпись в скобках разная.
Остается:
S
M
L
XL
XXL
Где то в начале должны быть определены значения размерам
допустим
S = 1
M = 2
L = 3
XL = 4
XXL = 5
После чего в документ записывается в такм виде:
(номер товара, определенное число, 1(т.е. значение размера, записывается не S а "1"), 0),
т.е.
(686, 16, 1, 0),
(686, 16, 2, 0),
(686, 16, 3, 0),
(686, 16, 4, 0),
(686, 16, 5, 0),
если есть другой товар
(687, 16, 1, 0),
(687, 16, 2, 0),
(687, 16, 3, 0),
(687, 16, 4, 0),
(687, 16, 5, 0),
к примеру у другого товара только есть размеры S, M тогда запишется вот так вот
(687, 16, 1, 0),
(687, 16, 2, 0),
Кто нибудь напишите как это реализовать. Готов заплатить денежку. за полностью готовый парсер
 
За денежку на фрилансе быстро напишут. Если договоритесь.Сам бы мог взяться, да некогда.
 
Не думаю, что на фрилансе напишут такой парсер за 1000р.
но за эти деньги можно купить готовый Content Downloader

Если в твоём описанном примере, на странице каждый элемент размещён
с индивидуальным признаком, ну т.е.
<div class="1">686</div>
<div class="2">6</div>
<div class="3">1</div>
<div class="4">0</div>
То проблем не будет, задашь для каждого элемента свою границу.
Формат вывода любой.
 
Тут самым сложным будет сбор всех нужных ссылок, на нужные товары.Хех на этом сайте ссылочки то русские ) Стукани в ЛС могу попробовать на JAVA написать,если устроит цену обговорим или на php, но боюсь будут проблемы со временем работы скрипта.
 
Хех на этом сайте ссылочки то русские )
да с русскими урлами косяк будет, но в принципе есть еще и такие урлы
_http://en.def-shop.com/product_info.php?products_id=39766
если номер товара совпадает с products_id то можно так реализовать
PHP:
<?php
//$url = "http://en.def-shop.com/Cipo-Baxx/Men/Overwear/Sweatshirts/Hoodies/Cipo-Baxx-Feel-The-Energy-Hoody-Antracite.html";  //ссылка
$nomer_tovara=39766; //номер товара
$cislo=16; //определенное число
$url="http://en.def-shop.com/product_info.php?products_id=".$nomer_tovara;
//S = 1 
//M = 2 
//L = 3
//XL = 4
//XXL = 5 

$content = file_get_contents($url);
preg_match_all('/<noscript>(.*?)<\/noscript>/si',$content,$options);
//print_r($options);
preg_match_all('/<option value=\"\d{1}\">(.*?)\s+\(/si',$options[1][0],$size);
//print_r($size);
$c=count($size[0]);
for($i=0;$i<$c;$i++)
{
$size1=$size[1][$i];
if($size1=="S") $s = 1;
if($size1=="M") $s = 2;
if($size1=="L") $s = 3;
if($size1=="XL") $s = 4;
if($size1=="XXL") $s = 5;
echo "(".$nomer_tovara.", ".$cislo.", ".$s.", 0)<br>";
}
?>
на выходе получаем
(39766, 16, 1, 0)
(39766, 16, 2, 0)
(39766, 16, 3, 0)
(39766, 16, 4, 0)
(39766, 16, 5, 0)
 
Осталось точнее выставить $id_tovara, и вперед…
В один поток долго придется качать...
PHP:
<?  
set_time_limit (0);
$start = 33000;
$finish = 34000;
for($id_tovara = $start;$id_tovara <= $finish; $id_tovara++) {         
$text = file_get_contents("http://en.def-shop.com/product_info.php?products_id=$id_tovara"); 
preg_match ('#<select class=\"product_info_size\"(.*?)</select>#s',$text,$text);
preg_match_all ('#<option value="\d">(.*?)\s#',$text[1],$matches); 
$file = fopen("kod.txt","a"); 
for($i = 0; $i < count($matches[1]); $i++){ 
    $razmer = array ( 'S'=>'1' , 'M'=>'2', 'L'=>'3' , 'XL'=>'4'  , 'XXL'=>'5' , 'XXXL'=>'6');
	$matches[1][$i] = strtr($matches[1][$i],$razmer);
	fwrite($file,"(".$id_tovara.", 16, ".$matches[1][$i].", 0)\n");
}
fclose($file);
}
?>
PS. Идею с ссылкой взял у zzallexx
 
На некоторые не проходит .
Карту сайта сграбить или скачать, на диск и потом уже регулярочкой пройтись собрать ссылочки
Первые две ссылки, то что нам нужно, и по ним уже ходить curl.

Набросал малёк, остально это код, то что сбросил VandJ и zzallexx, тока нужно будет модифицировать.
Тут косяк какой то в моём коде, разбираться лень, будет интерес посмотришь.

 
Назад
Сверху