Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Грабер сайт и перевод

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
A.N.R.I
Отправлено: 08 Марта, 2010 - 17:14:58
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




Здраствуйте!
Хочу нписать для себя Грабер с одного новостного сайта.
Если можно дайте ссылки на необходимые для меня статьи.
И так: есть сайт, на котором есть краткие описание статей (их много). Необходимо найти ссылки на статью (название имеет латинские буквы, не цифры, что, возможно, будет трудновато). Открыть статью и весь текст, содержащийся там, передать Гуглу (или другому переводчику), чтобы тот переклал с русского языка на Украинский, а после перевода уже занес в БД.

Как грабер делать - я немного читал, но собого представления не имею. И так как здесь никто не будет писать вместо меня, поэтому прошу дать ссылки на описания функций, которые мне будут необходимы для моей идеи

Заранее благодарен!


-----
 
 Top
JustUserR
Отправлено: 08 Марта, 2010 - 22:03:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




A.N.R.I В принципе для этого достаточно использовать CURL/sockets и соответственно регулярные выражения для разбора (Функции типа popen-оболожен лучше не использовать так как они неявно передают HTTP-данные Улыбка Далее можете поставить программу Proxymition и точно отлавливать все HTTP-запросы для получения интересующей вас информации с новостного сайта - и по аналогии делать запрос в вашем PHP-скрипте


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
movEAX
Отправлено: 09 Марта, 2010 - 16:37:13
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Если ты не знаком с регулярными выражениями, то перво-наперво необходимо их изучить, а так же, как уже упомянул JustUserR, CURL или sockets (правда я не понял причем тут popen, имелось в виду наверное fopen ?)

1. Маскируемся: Заголовки должны быть такие же как если бы мы заходили через обычный браузер. Желательно, но в некоторых случаях не обязательно.

2. Изучаем структуру страницы: Скорее всего, заголовок новости является ссылкой на полную версию и наверняка имеет определенный CSS класс т.е. <a href=".." class="news-title"> ... </a>.

3. На основе наблюдений составляем регулярное выражение которое выдерает все ссылки и заголовоки на статьи. Т.е. получаем массив типа:
PHP:
скопировать код в буфер обмена
  1.    [0] => Array(
  2.                  [0]=> http://......,
  3.                  [1]=> title
  4.              ),
  5.   [1] => Array(...
  6. );


4. Обходим полученный массив.
4.1 Загружаем контент по ссылке. Опять используем регулярные выражения, но на этот раз для выдерания контента статьи. С помощью Google API переводим содержимое на нужный язык. Сохраняем результат в БД/файл.
4.2 Переводим заголовок по средством Google API, тоже сохраняем в базу/файл.

Не помешает еще обработчик ошибок и удобный UI.


-----
армия.. самое убогое место
 
 Top
JustUserR
Отправлено: 10 Марта, 2010 - 17:18:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




movEAX пишет:
Как уже упомянул JustUserR, CURL или sockets (правда я не понял причем тут popen, имелось в виду наверное fopen ?)
Да имелось в виду использовать функций типа fopen (В том числе file_get_contents и тд Улыбка с URL-аргументом - ведь привыкание к такому подхожу очень плохо потому что для доступа к сайту который требует чуть больше чем GET/Host/User-agent-информацию это работать не будет - лучше сразу привыкать использовать CURL/sockets и изучать протокол работы с данным сайтом на анализе HTTP-запросов которые можно смотреть нпример с помощью Proxymition
Сложнее всего обойти защиту на JS потому что потребуется либо анализ и разбор JS-кода - как например в CGIProxy - или виртуальная машина JS что очень сложно


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
A.N.R.I
Отправлено: 18 Марта, 2010 - 16:46:59
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




JustUserR, ам, а название программы верно написано? А то гугл дал только ссылку на php.su

А что лучше - curl или sockets???

(Отредактировано автором: 18 Марта, 2010 - 16:48:45)



-----
 
 Top
movEAX
Отправлено: 18 Марта, 2010 - 17:44:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




A.N.R.I пишет:
JustUserR, ам, а название программы верно написано? А то гугл дал только ссылку на php.su

А что лучше - curl или sockets???


HTTP сниферов полно (EffeTech HTTP Sniffer, HTTPAnalyzer, CommView и т.д.), можешь тот же FireBug для мазилы использовать, там тоже можно заголовки подсмотреть.


-----
армия.. самое убогое место
 
 Top
A.N.R.I
Отправлено: 18 Марта, 2010 - 17:53:58
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




movEAX пишет:
A.N.R.I пишет:
JustUserR, ам, а название программы верно написано? А то гугл дал только ссылку на php.su

А что лучше - curl или sockets???


HTTP сниферов полно (EffeTech HTTP Sniffer, HTTPAnalyzer, CommView и т.д.), можешь тот же FireBug для мазилы использовать, там тоже можно заголовки подсмотреть.


Так, юзаю curl .
Написал такой код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. // инициализация сеанса
  4. $ch = curl_init();
  5.  
  6. // установка URL и других необходимых параметров
  7. curl_setopt($ch, CURLOPT_URL, "http://prolite.ru/");
  8. curl_setopt($ch, CURLOPT_HEADER, 0);
  9.  
  10. // загрузка страницы и выдача её браузеру
  11. curl_exec($ch);
  12.  
  13. // завершение сеанса и освобождение ресурсов
  14. ?>
  15.  


1. Получаю информацию - она кракозябриками. Меняю в браузере кодировку на utf8 - все нормально. Как сделать так, что бы все было нормально

2. Как теперь регулярные выражения использовать? Так?

$text=preg_replace("#(https?|ftp)://\S+[^\s.,>)\];'\"!?]#",'<a href="\\0">\\0</a>',curl_exec($ch) ); ??


-----
 
 Top
movEAX
Отправлено: 18 Марта, 2010 - 19:59:40
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




A.N.R.I пишет:
1. Получаю информацию - она кракозябриками. Меняю в браузере кодировку на utf8 - все нормально. Как сделать так, что бы все было нормально

iconv
Цитата:
2. Как теперь регулярные выражения использовать? Так?

Не совсем понял что ты хочешь этой регуляркой сделать. Как я понял, ты ищешь ссылкоподобный текст и делаешь из него ссылку Не понял Зачем?


-----
армия.. самое убогое место
 
 Top
A.N.R.I
Отправлено: 18 Марта, 2010 - 21:10:04
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




movEAX пишет:
Не совсем понял что ты хочешь этой регуляркой сделать. Как я понял, ты ищешь ссылкоподобный текст и делаешь из него ссылку Зачем?

Нет, меня больше интересует выделенный текст, я его правильно втулил? Сейчас буду повторять регулярки, а то забыл Хм


-----
 
 Top
A.N.R.I
Отправлено: 19 Марта, 2010 - 16:20:15
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




movEAX пишет:

iconv


$output=curl_exec($ch);

$output = iconv('utf-8','windows-1251',$output);

?? так не пашет Недовольство, огорчение

И еще несколько вопросов:

Ну например я уже сделал поиск ссылок - как потом перейти по них?

После перехода, я вносю в БД данные, как сделать что бы после второго запуска не брал инфомацию тех статей, которые уже есть?

Как скрипт запускать автоматически, например, раз в день?
(Добавление)
Сделал так:
PHP:
скопировать код в буфер обмена
  1.  
  2. preg_match_all('~<a\\s([^>]*?)\\bhref\\s*=\\s*(["\'])(.*?)\\2([^>]*?)>(.*?)</a>~s', $data, $m, PREG_SET_ORDER);
  3. foreach($m as $k=>$v)
  4.     printf('%s<br />',  htmlspecialchars($v[3]), preg_match('~\\brel\\s*=\\s*(["\'])nofollow\\1~', $v[1].$v[4])? 'y':'n');  
  5.  
  6.  

Но ищет по всей странице, как сделать поиск по всех дивах, которые есть на сайте с такими параметрами:
<div class="imageElement">??

И как потом открыть ссылки?

(Отредактировано автором: 19 Марта, 2010 - 16:27:12)



-----
 
 Top
JustUserR
Отправлено: 19 Марта, 2010 - 19:16:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




A.N.R.I пишет:
JustUserR, ам, а название программы верно написано? А то гугл дал только ссылку на php.su
А что лучше - curl или sockets???
Да с названием буквы перепутал - я имел в виду [url]http://go[dot]mail[dot]ru/search?q=Proxymitron скачать[/url]
Что касается curl и sockets то могу сказать что curl проще но он работате только для определенного набора протоколов - а с помощью sockets можно писать почти любые сетевые клиенты


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB