|
|
Google news grabber for Dummies |
|
Программирование - PHP, MySQL, JavaScript, CSS, HTML верстка и т.д. |
![]() |
|
Опции темы | Оценить тему | Опции просмотра |
![]() |
#1 |
|
![]() ![]() Ребят, как обмануть Гугл (Яшу) и забрать у него новости на свой сайт для определенной компании?
Делаю парсер 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] Но почему-то он не выдает мне ничего. Меняю на свой поток (и сейчас стоит) все робит. Защита копирования видимо стоит от таких как я. Как ее обойти? ![]() Хочу чтоб снизу страницы были новости о компании. А сверху дневной график котировок. Но об этом в следующей серии. Спасибо. ![]() "Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
|
![]() |
![]() ![]() ![]() |
![]() |
#2 |
|
![]() можно попробовать забирать через яху пайпс
pipes.yahoo.com там точно все ок забирается |
![]() |
![]() ![]() ![]() |
![]() |
#3 |
|
![]() За дублированый контент можно попасть под фильтр
![]() ![]() Хотите бесплатно и быстро переехать на хороший хостинг?
|
![]() |
![]() ![]() ![]() |
![]() |
#4 |
|
![]() ![]() Прям запугали. Да я лишь ссылочки на новости забираю. Описание не беру. Хотя 90%(если не больше) интернет ресурсов это копи-паст.
С трубами я не разобрался, хотя посвятил им не один час своего времени. Как с пхп связать? Ведь фильровать мне по переменной надо. ![]() "Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
|
![]() |
![]() ![]() ![]() |
![]() |
#5 |
|
![]() Парсим новости на свой сайт и с него размещаем где угодно
|
![]() |
![]() ![]() ![]() |
![]() |
#6 |
|
![]() [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- лучше не заморачиваться- ИМХО ![]() Сео
|
![]() |
![]() ![]() ![]() |
"Спасибо" от: | Aqula (24.05.2010) |
![]() |
#7 |
|
![]() С котировками всё проще:
[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] Список котировок- нужно только распарсить, но думаю в этом не возникнет труда. ![]() Сео
|
![]() |
![]() ![]() ![]() |
![]() |
#8 |
|
![]() ![]() Ух ты, komyak, а для ММВБ знаешь что либо подобное? (про график)
И еще вопросик. Что в $refer будет существенно? Сейчас пробую адаптировать этот скрипт для ссылок на заголовки статей и думаю над кэшированием в файл. ![]() "Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
|
![]() |
![]() ![]() ![]() |
![]() |
#9 | |||
|
![]() Цитата:
Цитата:
Но мой совет, если с кешированием не сталкивался, то проще запускать скрипт через крон: 1/ Удалили файл с новостями; 2/ Напарсили снова. Цитата:
Если парсить прямо с биржи: url:'/issrpc/marketdata/'+trade_engine+'/index/'+data_type+'/today/result.json', Подставлять нужные индексы и парсить результат. ![]() Сео
|
|||
![]() |
![]() ![]() ![]() |
"Спасибо" от: | Aqula (24.05.2010) |
![]() |
#10 |
|
![]() ![]() komyak, спасибо тебе огромное, но не дает покоя $refer
что присвоить $refer? ($refer = $_SERVER['HTTP_REFERER']; ??) ![]() "Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
|
![]() |
![]() ![]() ![]() |
![]() |
#11 |
|
![]() [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 на эту функцию. ![]() Сео
|
![]() |
![]() ![]() ![]() |
![]() |
#12 |
|
![]() ![]() Переделал регулярки под такой шабик дата - ссылки - источник, только с ними выдает не все ссылки почему то. Пример:
[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] Не пойму почему. ![]() "Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
|
![]() |
![]() ![]() ![]() |
![]() |
#13 |
|
![]() [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] А так? + Лишние операции делаете по изменению кодировки, зачем её каждый раз менять. ![]() Сео
|
![]() |
![]() ![]() ![]() |
![]() |
#14 |
|
![]() ![]() Что то не парсит третий вариант первые с горем попалам. Это явно регулярка виновата
preg_match_all( '|<span class="source">(.*)</span>|Uis', $page_text , $s ); Что здесь не так? ![]() "Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
|
![]() |
![]() ![]() ![]() |
![]() |
#15 |
|
![]() ![]() Ага разобрался с регулярками там в кавычках фигня. а вот с гугл все же не парсит, с некоторых страниц. Например с __http://news.google.com/news/
![]() "Сначала они тебя не замечают, потом смеются над тобой, затем борются с тобой. А потом ты побеждаешь."
|
![]() |
![]() ![]() ![]() |
|
Текущее время: 15:48. Часовой пояс GMT +3.
|