Вернуться   SEO форум - оптимизация и продвижение сайтов > Web разработки > Программирование

Важная информация
Программирование - PHP, MySQL, JavaScript, CSS, HTML верстка и т.д.

Ответ
 
Опции темы Оценить тему Опции просмотра
Старый 23.05.2010, 17:25   #1
 
Аватар для Aqula
 
Сообщений: 23
FR (активность): 671

Доп. информация
Счастье Автор темы Google news grabber for Dummies

Ребят, как обмануть Гугл (Яшу) и забрать у него новости на свой сайт для определенной компании?
Делаю парсер RSS и некую фильтрацию в URL. (Пока догадался до такого варианта)

[PHP]
$comp_name = "Газпром";
$encomp = iconv("windows-1251", "UTF-8", $comp_name);
$encomp = urlencode($encomp);

//адрес новостей (URL-адрес RSS потока)
$url_rss = "ввв гугл дот ком/news?pz=1&cf=all&ned=ru_ru&hl=ru&q=allintext%3A+{$ encomp}&cf=all&output=rss";
[/PHP]

Но почему-то он не выдает мне ничего. Меняю на свой поток (и сейчас стоит) все робит. Защита копирования видимо стоит от таких как я. Как ее обойти?
Хочу чтоб снизу страницы были новости о компании.
А сверху дневной график котировок. Но об этом в следующей серии. Спасибо.


"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
Aqula вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 23.05.2010, 19:25   #2
 
Аватар для timson
 
Сообщений: 13
FR (активность): 202

Доп. информация
По умолчанию Re: Google news grabber for Dummies

можно попробовать забирать через яху пайпс

pipes.yahoo.com

там точно все ок забирается
timson вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 23.05.2010, 19:37   #3
 
Аватар для 2214
 
Сообщений: 191
FR (активность): 4,427

Доп. информация
По умолчанию Re: Google news grabber for Dummies

За дублированый контент можно попасть под фильтр !? А это не очень хорошо.


Хотите бесплатно и быстро переехать на хороший хостинг?
2214 вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 23.05.2010, 19:49   #4
 
Аватар для Aqula
 
Сообщений: 23
FR (активность): 671

Доп. информация
По умолчанию Автор темы Re: Google news grabber for Dummies

Прям запугали. Да я лишь ссылочки на новости забираю. Описание не беру. Хотя 90%(если не больше) интернет ресурсов это копи-паст.
С трубами я не разобрался, хотя посвятил им не один час своего времени. Как с пхп связать? Ведь фильровать мне по переменной надо.


"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
Aqula вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 24.05.2010, 11:08   #5
 
Аватар для specialist-seo
 
Сообщений: 2,413
FR (активность): 62,878

Доп. информация
По умолчанию Re: Google news grabber for Dummies

Парсим новости на свой сайт и с него размещаем где угодно
specialist-seo вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 24.05.2010, 11:15   #6
 
Аватар для komyak
 
Сообщений: 1,178
FR (активность): 32,790

Доп. информация
По умолчанию Re: Google news grabber for Dummies

[php]
<?php
$zapros = "Ваш запрос";

set_time_limit( 0 );
function curl( $url )
{
$coockes = tempnam( '/tmp', 'cookie' );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; MRA 5.4 (build 02652); ru) Presto/2.2.15 Version/10.00" );
curl_setopt( $ch, CURLOPT_REFERER, $refer );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $coockes );
curl_setopt( $ch, CURLOPT_COOKIEFILE, $coockes );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
$html = curl_exec( $ch );
curl_close( $ch );
return $html;
}

$url = "http://news.google.com/news/search?pz=1&num=100&cf=all&q=" . urlencode( $zapros ) . "&cf=all";
$page_text = curl( $url );
preg_match_all( '|<div class="snippet">(.*)<b>...</b>|Uis', iconv( 'UTF-8', 'windows-1251', $page_text ), $i );

$c = count( $i[1] )-1;
$e = 0;
while ( $e <= $c ) {
$got = strip_tags( $i[1][$e] );
echo $got . "<hr>";
$e++;
}
?>
[/php]

Когда то писал спамилку в твитер. Сейчас подправил регулярки, вроде работает =))
Практически тоже самое что ты и хочешь.
Чтоб сделать точную реализацию нужно:
Не ограниченное время исполнение скриптов на сервере.
Знать тот сайт с которого хочешь грабить
Для каждого такого сайта написать отдельную функцию(смотрю на это со своей колокольни)
Ну и соответственно - куды будешь добавлять? В файл, в базу, в sql-файл...

Как совет- сначала напиши скрипт-граббер для одного сайта, а потом по его принципу и остальные сделаешь.
RSS- лучше не заморачиваться- ИМХО


Сео
komyak вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
"Спасибо" от:
Aqula (24.05.2010)
Старый 24.05.2010, 11:27   #7
 
Аватар для komyak
 
Сообщений: 1,178
FR (активность): 32,790

Доп. информация
По умолчанию Re: Google news grabber for Dummies

С котировками всё проще:
[html]
<!--График-->
<img src="http://www.google.com/finance/chart?cht=c&q=NASDAQ:MSFT,NASDAQ:GOOG,NYSE:BRE,NAS DAQ:YHOO" />
[/html]

[html]
<!--Список котировок-->
http://www.google.com/finance?q=NASDAQ:GOOG
[/html]
Список котировок- нужно только распарсить, но думаю в этом не возникнет труда.


Сео
komyak вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 24.05.2010, 14:53   #8
 
Аватар для Aqula
 
Сообщений: 23
FR (активность): 671

Доп. информация
По умолчанию Автор темы Re: Google news grabber for Dummies

Ух ты, komyak, а для ММВБ знаешь что либо подобное? (про график)
И еще вопросик. Что в $refer будет существенно?
Сейчас пробую адаптировать этот скрипт для ссылок на заголовки статей и думаю над кэшированием в файл.


"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
Aqula вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 24.05.2010, 15:07   #9
 
Аватар для komyak
 
Сообщений: 1,178
FR (активность): 32,790

Доп. информация
По умолчанию Re: Google news grabber for Dummies

Цитата:
Что в $refer будет существенно?
Многие сайты без реферера не пускают к себе. Яндекс ни разу не пробовал парсить? Я пробовал, это пи...
Цитата:
думаю над кэшированием в файл.
Дык и сохраняй всё это в файл. Потом при запросе проверяй дату последнего изменения и если она "не устраивает", то сноси файл и парси заново.
Но мой совет, если с кешированием не сталкивался, то проще запускать скрипт через крон:
1/ Удалили файл с новостями;
2/ Напарсили снова.

Цитата:
ММВБ
Не знаю. А ты там, прямо в гугле и посмотри. Гугл вообще такая сс... найдёт всё что угодно - ПРИМЕР

Если парсить прямо с биржи:
url:'/issrpc/marketdata/'+trade_engine+'/index/'+data_type+'/today/result.json',
Подставлять нужные индексы и парсить результат.


Сео
komyak вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
"Спасибо" от:
Aqula (24.05.2010)
Старый 24.05.2010, 19:54   #10
 
Аватар для Aqula
 
Сообщений: 23
FR (активность): 671

Доп. информация
По умолчанию Автор темы Re: Google news grabber for Dummies

komyak, спасибо тебе огромное, но не дает покоя $refer
что присвоить $refer? ($refer = $_SERVER['HTTP_REFERER']; ??)


"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
Aqula вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 24.05.2010, 19:59   #11
 
Аватар для komyak
 
Сообщений: 1,178
FR (активность): 32,790

Доп. информация
По умолчанию Re: Google news grabber for Dummies

[php]
function curl( $url )
{
$coockes = tempnam( '/tmp', 'cookie' );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; MRA 5.4 (build 02652); ru) Presto/2.2.15 Version/10.00" );
curl_setopt( $ch, CURLOPT_REFERER, "http://news.google.com/news?pz=1&hl=ru&ned=ru_ru" );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $coockes );
curl_setopt( $ch, CURLOPT_COOKIEFILE, $coockes );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
$html = curl_exec( $ch );
curl_close( $ch );
return $html;
}
[/php]

Я не придал значению о чём ты =)) Там не важно, но если хочешь, то замени function curl на эту функцию.


Сео
komyak вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 31.05.2010, 21:56   #12
 
Аватар для Aqula
 
Сообщений: 23
FR (активность): 671

Доп. информация
По умолчанию Автор темы Re: Google news grabber for Dummies

Переделал регулярки под такой шабик дата - ссылки - источник, только с ними выдает не все ссылки почему то. Пример:
[PHP]preg_match_all( '|<h2 class="title">(.*)<a class="star-link yesscript"[^>]+>|Uis', iconv( 'UTF-8', 'windows-1251', $page_text ), $i );
preg_match_all( '|<span class="date ">(.*)<\/span>|Uis', iconv( 'UTF-8', 'windows-1251', $page_text ), $d );
preg_match_all( '|<span class="source">(.*)<\/span>|Uis', iconv( 'UTF-8', 'windows-1251', $page_text ) , $s );

$c = count( $d[1] )-1;
$e = 0;
while ( $e <= $c ) {
$lenta .= '<font color="silver">' . $d[1][$e] . '</font>' . $i[1][$e] . '<font color="silver">' . $s[1][$e]. '</font><br />';
$e++;
[/PHP]
Не пойму почему.


"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
Aqula вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 01.06.2010, 06:34   #13
 
Аватар для komyak
 
Сообщений: 1,178
FR (активность): 32,790

Доп. информация
По умолчанию Re: Google news grabber for Dummies

[php]
$page_text=iconv( 'UTF-8', 'windows-1251', $page_text );
preg_match_all( '|<h2 class="title">(.+?)<a class="star-link|Uis', $page_text, $i );
preg_match_all( '|<span class="date ">(.+?)</span>|Uis', $page_text, $d );
preg_match_all( '|<span class="source">(.+?)</span>|Uis', $page_text , $s );

$c = count( $d[1] )-1;
$e = 0;
while ( $e <= $c ) {
$lenta .= '<font color="silver">' . $d[1][$e] . '</font>' . $i[1][$e] . '<font color="silver">' . $s[1][$e]. '</font><br />';
$e++;
[/php]
А так? + Лишние операции делаете по изменению кодировки, зачем её каждый раз менять.


Сео
komyak вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 26.03.2011, 22:40   #14
 
Аватар для Aqula
 
Сообщений: 23
FR (активность): 671

Доп. информация
По умолчанию Автор темы Re: Google news grabber for Dummies

Что то не парсит третий вариант первые с горем попалам. Это явно регулярка виновата
preg_match_all( '|<span class="source">(.*)</span>|Uis', $page_text , $s );
Что здесь не так?


"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
Aqula вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 27.03.2011, 21:24   #15
 
Аватар для Aqula
 
Сообщений: 23
FR (активность): 671

Доп. информация
По умолчанию Автор темы Re: Google news grabber for Dummies

Ага разобрался с регулярками там в кавычках фигня. а вот с гугл все же не парсит, с некоторых страниц. Например с __http://news.google.com/news/


"Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
Aqula вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Ответ

Быстрый ответ
Ваше имя пользователя: Регистрация. Для входа нажмите здесь
Случайный вопрос

Сообщение:
Опции
Внимание!
Этой теме более 4112 дней. Вы можете оставить сообщение здесь. Но, обращаем внимание. Возможно, рациональней создать новую тему (найти свежее обсуждение)?


Опции темы
Опции просмотра Оценка этой теме
Оценка этой теме:

Ваши права в разделе
Вы не можете создавать новые темы
Вы можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

Текущее время: 15:48. Часовой пояс GMT +3.