Граббер для новичков

Статус
В этой теме нельзя размещать новые ответы.

Css_Ufa

Мой дом здесь!
Регистрация
25 Ноя 2008
Сообщения
543
Реакции
325
Всем привет. Вот сижу и делаю граббер. реализовал пока 1стадию, сграбил то что нужно мне...
Вопрос на засыпку - как сделать обработку данных в граббере, к примеру у вас несколько десятков новостей на разных страницах и нужно сделать запрос к каждой из них... Вот сижу и читаю пока, если раньше ответ найдете пишите...
Это будет интересно всем, кто хочет для начала написать свой граббер под себя...
HTML:
<?
if(!($myFile=fopen("http://87.106.102.151/bet/index?$$QUERY_STRING","r"))) // Адресс донора
{ 
echo "The news interface is down for maintenance."; 
exit; 
} 
while(!feof($myFile)) 
{ 
$myLine.=fgets($myFile,255); 
} 
fclose($myFile); 
$start="<div>"; // Начало тега, с которого нужно взять инфу
$end="</div>"; // конец тега
$start_position=strpos($myLine, $start);  //обработка сайта с место начала тега
$end_position=strpos($myLine, $end)+strlen($end); // конец обработки
$length=$end_position-$start_position; // задается длина
$myLine=substr($myLine, $start_position, $length); 
// Display HTML 
echo $myLine; // вывод страницы


?>
<html>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="layout/styles/styles.css" /> //cтилистика сайта
</html>

Стилистику просто скопировал с самого сайта, сделал папку и все. :)
А конец и начала тега нужно для того чтобы тебе не весь сайт копирнуть, а только то что тебе необходимо... Вот пока все мои познания, надеюсь кто еще откликнется... :)
 
что-то я не понял

у тебя есть код грабинга одной страницы, чего не хватает?

бери список запросо и в цикле грабь контент
 
так мне в ручную писать для каждой страницы цикл что-ли? я просто не совсем тебя понимаю)

HTML:
http://87.106.102.151/bet/index.php?bookmakerId=3000181&bettingExchangeId=3000206&typeofbet=qualifier&minBackOdds=
- это запрос под
HTML:
Bookmaker:365Bet
, там еще есть разные запросы, к примеру меняется
HTML:
Betting Exchange:
и
HTML:
Select your bet type:
и запросы разные, там еще куча страниц есть... Может дашь какую-нибудь наводку? :)
Заранее спасибо...


Как цикл на каждую запрос создать? Вот я это понять не могу...
 
последний твой пост я не очень понял

но судя по первому посту:
http://87.106.102.151/bet/index?$$QUERY_STRING

в массив $arr- список твоих запросов
потом
Код:
foreach($arr as $querry)
{
// тут пошел твой код парсинга

if(!($myFile=fopen("http://87.106.102.151/bet/index?$querry","r"))) // Адресс донора
{ 
echo "The news interface is down for maintenance."; 
exit; 
} 
while(!feof($myFile)) 
{ 
$myLine.=fgets($myFile,255); 
} 
fclose($myFile); 
$start="<div>"; // Начало тега, с которого нужно взять инфу
$end="</div>"; // конец тега
$start_position=strpos($myLine, $start);  //обработка сайта с место начала тега
$end_position=strpos($myLine, $end)+strlen($end); // конец обработки
$length=$end_position-$start_position; // задается длина
$myLine=substr($myLine, $start_position, $length); 
// Display HTML 
echo $myLine; // вывод страницы
}

PS
никак не понял как Для просмотра ссылки Войди или Зарегистрируйся связано с Bookmaker:365Bet
 
никак не понял как Для просмотра ссылки Войди или Зарегистрируйся связано с Bookmaker:365Bet

Там выбираешь Bookmaker, тебе выдает запрос, а ту ссылку которую я дал - это пример, что это запрос от Bookmaker,который равен 365Bet... Вот и все, теперь понял?
Что там очень много запросов и я понять не могу как их делать...:ah:

Добавлено через 1 минуту
в массив $arr- список твоих запросов

А вот пример, массив $arr - как сделать хоть для одного запроса, подскажи пож-та...
 
Там страницы передаются в параметре s с шагом 30.
1 страница - http://87.106.102.151/bet/index.php....&s=0
2 страница - http://87.106.102.151/bet/index.php....&s=30
3 страница - http://87.106.102.151/bet/index.php....&s=60
делаешь простой цикл
PHP:
for($i = 0, $i < 14; $i+=30) {
    fopen('http://87.106.102.151/bet/index.php?bookmakerId=3000181&bettingExchangeId=3000206&typeofbet=qualifier&minBackOdds=&s='.$i);
}
как-то так.
А насчет как все там связано, проще зайти на саму страницу и глянуть сурс.
 
создай ассоциированные массивы
PHP:
<?php
$bookmakerId=array(
		'10Bet'=>'3000271',
		'188Bet'=>'3000343',
		'24hPoker'=>'3000250',
		'888Sport'=>'3000424',
		'Bet-at-home.com'=>'3000070',
		'Bet365'=>'3000181',
		'BetBoo'=>'3000380',
		'BetChronicle'=>'3000411',
		'BetClick'=>'3000336',
		'BetCris'=>'3000244',
		'BetDaq'=>'3000206',
		'Betfair'=>'3000177',
		'Betfred'=>'3000294',
		'BetGun'=>'3000342',
		'Betinternet'=>'3000074',
		'Betsafe'=>'3000314',
		'Betway'=>'3000326',
		'Blue Square'=>'3000037',
		'Bodog.com'=>'3000174',
		'Boyle Sports'=>'3000287',
		'BWin'=>'3000006',
		'Canbet'=>'3000058',
		'Centrebet'=>'3000007',
		'Coral'=>'3000245',
		'Eurobet'=>'3000005',
		'Expekt'=>'3000028',
		'Gamebookers'=>'3000277',
		'Globetsport'=>'3000431',
		'IASbet'=>'3000026',
		'Intertops'=>'3000009',
		'Interwetten'=>'3000004',
		'Jenningsbet'=>'3000481',
		'Jetbull'=>'3000419',
		'Ladbrokes'=>'3000068',
		'MyBet'=>'3000141',
		'Paddy Power'=>'3000113',
		'PartyBets'=>'3000382',
		'SportingBet'=>'3000012',
		'SportsAcumen'=>'3000369',
		'Stan James'=>'3000066',
		'Stryyke'=>'3000445',
		'Tipico'=>'3000474',
		'Totesport'=>'3000200',
		'Unibet'=>'3000015',
		'William Hill'=>'3000021',
		'WinUnited'=>'3000349',
		'zedbet'=>'3000443'
		);
$bettingExchangeId=array(
	'BetDaq'=>'3000206',
	'Betfair'=>'3000177',
	'WBX'=>'3000396'
	);
	?>
и обращайся как
Для 188Bet:Betfair
Код:
$url='http://87.106.102.151/bet/index.php?bookmakerId='.$bookmakerId['188Bet'].'&bettingExchangeId='.$bettingExchangeId['Betfair'].'&typeofbet=qualifier&minBackOdds=
если я правильно понял вопрос

ну а про листание страниц тебе уже сказали

Добавлено через 1 минуту
PS если ты не знаешь как просмотреть исходный код html страницы -- ( Вид - Исходный код ) то имхо рановато тебе писать парсеры
 
Я просто сурс - не правильно понял. а так я давно его просмотрел уже весь...

Так вот, спасибо всем, на Ваш суд, творение граббера...

1. Сначала задаем откуда грабим инфу:
HTML:
if(!($myFile=fopen("http://87.106.102.151/bet/index.php?bookmakerId='.$bookmakerId.'&bettingExchangeId='.$bettingExchangeId.'&typeofbet=qualifier&minBackOdds=$querry","r")))

2. затем создаем цикл
HTML:
foreach($arr as $querry)
{
$bookmakerId=array( 
        '10Bet'=>'3000271', 
        '188Bet'=>'3000343', 
        '24hPoker'=>'3000250', 
        '888Sport'=>'3000424', 
        'Bet-at-home.com'=>'3000070', 
        'Bet365'=>'3000181', 
        'BetBoo'=>'3000380', 
        'BetChronicle'=>'3000411', 
        'BetClick'=>'3000336', 
        'BetCris'=>'3000244', 
        'BetDaq'=>'3000206', 
        'Betfair'=>'3000177', 
        'Betfred'=>'3000294', 
        'BetGun'=>'3000342', 
        'Betinternet'=>'3000074', 
        'Betsafe'=>'3000314', 
        'Betway'=>'3000326', 
        'Blue Square'=>'3000037', 
        'Bodog.com'=>'3000174', 
        'Boyle Sports'=>'3000287', 
        'BWin'=>'3000006', 
        'Canbet'=>'3000058', 
        'Centrebet'=>'3000007', 
        'Coral'=>'3000245', 
        'Eurobet'=>'3000005', 
        'Expekt'=>'3000028', 
        'Gamebookers'=>'3000277', 
        'Globetsport'=>'3000431', 
        'IASbet'=>'3000026', 
        'Intertops'=>'3000009', 
        'Interwetten'=>'3000004', 
        'Jenningsbet'=>'3000481', 
        'Jetbull'=>'3000419', 
        'Ladbrokes'=>'3000068', 
        'MyBet'=>'3000141', 
        'Paddy Power'=>'3000113', 
        'PartyBets'=>'3000382', 
        'SportingBet'=>'3000012', 
        'SportsAcumen'=>'3000369', 
        'Stan James'=>'3000066', 
        'Stryyke'=>'3000445', 
        'Tipico'=>'3000474', 
        'Totesport'=>'3000200', 
        'Unibet'=>'3000015', 
        'William Hill'=>'3000021', 
        'WinUnited'=>'3000349', 
        'zedbet'=>'3000443' 
        ); 
$bettingExchangeId=array( 
    'BetDaq'=>'3000206', 
    'Betfair'=>'3000177', 
    'WBX'=>'3000396' 
    );

3. Создаем цикл для просматривания страниц
HTML:
for($i = 0, $i < 14; $i+=30) { 
    fopen('http://87.106.102.151/bet/index.php?bookmakerId='.$bookmakerId.'&bettingExchangeId='.$bettingExchangeId.'&typeofbet=qualifier&minBackOdds=&s='.$i); 
}
4. Затем ставим откуда копипастим
HTML:
while(!feof($myFile)) 
{ 
$myLine.=fgets($myFile,255); 
} 
fclose($myFile); 
$start="<div>"; 
$end="</div>"; 
$start_position=strpos($myLine, $start); 
$end_position=strpos($myLine, $end)+strlen($end); 
$length=$end_position-$start_position; 
$myLine=substr($myLine, $start_position, $length); 
// Display HTML 
echo $myLine;

Вроде все, ничего не забыл... Но чувствую что не пашет...

Еше вопрос, как убрать не нужные элемент? Имеется ввиду реклама, она содержится в этих ограничениях
HTML:
$start="<div>"; $end="</div>";

В итоге получается так:


теперь он только рекламу показывает... :)
Самое странное скорее всего неправильно в цикле по страницам и + в самом цикле запроса по id букмекера:)
 
Вы явно сами не понимаете что делаете...
Зачем вы в цикле инициализируете массив?

В общем виде у вас должно получиться:
1) Цикл по страницам выдачи сайта-донора
2) Загрузка страницы
3) Обработка
4) Вывод результатов/сохранение полученных данных
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху