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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
ByUNNAMED
Отправлено: 30 Марта, 2015 - 12:10:41
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Март 2012  


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




Вообщем такое дело, нужно мне спарсить все ссылки с сайта, например с категории Бизнес, но дело в том что в этой категории 3 страницы, я написал небольшой скриптик который парсит все ссылки с 1 страницы.

PHP:
скопировать код в буфер обмена
  1.  
  2. $file = file_get_contents('http://site.com/index/page/1');
  3.  
  4.  
  5. $urls = preg_match_all('|<a href="(.*?)">|uis', $file, $result);
  6.  
  7.  
  8.  
  9. for($i=0;$i<$urls;$i++){
  10.        
  11.       echo $reult[1][$i].'<br />';
  12.                
  13. }
  14.  


Но как мне сделать что бы он сам переходил на другие страницы (т.е 1, 2, 3 и т.д)?

И еще один вопрос.

Как мне сделать так что бы скрип еще переходил по этим ссылкам (спарсеным) и парсил от туда текст?
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Марта, 2015 - 13:00:57
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




 
 Top
dimaua2
Отправлено: 30 Марта, 2015 - 17:31:58
Post Id



Посетитель


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


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




Ну тут маленьким скриптом не обойтись, писал парсер, что бы делал все это + убирал не нужный текст,если нужно переводил его и заливал с картинками в вп(+ еще пара фичей), вышло 439 строк....
могу сказать гугли в сторону curl + phpQuery
http://pizdo[dot]biz/parsing-tovarov[dot][dot][dot]hhi-phpquery-175
вот тут есть от части, что ты хочешь
https://code[dot]google[dot]com/p/phpquery/
я же использовал еще (для постинга в вп)
http://scripts.incutio.com/xmlrpc/

(Отредактировано автором: 30 Марта, 2015 - 17:33:12)

 
 Top
xuor
Отправлено: 30 Марта, 2015 - 22:27:12
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $urls = array();
  3. for ($counter=1; $counter<3; $counter++)
  4. {
  5. $file = file_get_contents('http://site.com/index/page/'.$counter);
  6. preg_match_all('|<a href="(.*?)">|uis', $file, $result);
  7. $urls = array_merge ($urls, $result[1]);
  8. }
  9. foreach ($urls as $links) {
  10. $file = file_get_contents($links);
  11. // далее парсим ссылку...
  12. }
  13.  

(Отредактировано автором: 30 Марта, 2015 - 22:36:32)

 
 Top
dimaua2
Отправлено: 01 Апреля, 2015 - 07:48:06
Post Id



Посетитель


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


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




Видимо человек выше пропустил, то, что тсу нужно еще спарсить контент с этих ссылок)
Тсу все же рекомендую ознакомится с тем, что дал и гуглить в ту сторону, некоторые решения уже есть в сети, попробуй допилить их под себя...

пс. для получения контента я бы юзал(да и юзаю curl)

часть из моего скрипта...

PHP:
скопировать код в буфер обмена
  1.  
  2. function getRandomUserAgent(){
  3.         $userAgents = array(
  4.                 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1',
  5.                 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6',
  6.                 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
  7.                 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)',
  8.                 'Opera/9.20 (Windows NT 6.0; U; en)',
  9.                 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50',
  10.                 'Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]',
  11.                 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.7) Gecko/20040624 Firefox/0.9',
  12.                 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/48 (like Gecko) Safari/48'
  13.         );
  14.         $random = mt_rand(0,8);
  15.         return $userAgents[$random];
  16. }
  17.  
  18. function my_user($url){
  19.         $curl = curl_init();
  20.         $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
  21.         $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
  22.         $header[] = "Cache-Control: max-age=0";
  23.         $header[] = "Connection: keep-alive";
  24.         $header[] = "Keep-Alive: 300";
  25.         $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
  26.         $header[] = "Accept-Language: en-us,en;q=0.5";
  27.         $header[] = "Pragma: ";
  28.         curl_setopt_array($curl, array(
  29.                 CURLOPT_URL => $url,
  30.                 CURLOPT_USERAGENT => getRandomUserAgent(),
  31.                 CURLOPT_HTTPHEADER => $header,
  32.                 CURLOPT_REFERER => 'http://www.google.com',
  33.                 CURLOPT_RETURNTRANSFER => true,
  34.                 CURLOPT_CONNECTTIMEOUT => 120,
  35.                 CURLOPT_FOLLOWLOCATION => true,
  36.                 CURLOPT_HEADER => false,
  37.                 CURLOPT_TIMEOUT => 10
  38.         ));
  39.         $data = curl_exec($curl);
  40.         curl_close($curl);
  41.         sleep(mt_rand(2,4));
  42.         return $data;
  43. }
  44.  

(Отредактировано автором: 01 Апреля, 2015 - 07:51:25)

 
 Top
xuor
Отправлено: 01 Апреля, 2015 - 12:45:31
Post Id


Новичок


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


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




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

пс. для получения контента я бы юзал(да и юзаю curl)

часть из моего скрипта...

PHP:
скопировать код в буфер обмена
  1.  
  2. function getRandomUserAgent(){
  3.         $userAgents = array(
  4.                 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1',
  5.                 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6',
  6.                 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
  7.                 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)',
  8.                 'Opera/9.20 (Windows NT 6.0; U; en)',
  9.                 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50',
  10.                 'Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]',
  11.                 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.7) Gecko/20040624 Firefox/0.9',
  12.                 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/48 (like Gecko) Safari/48'
  13.         );
  14.         $random = mt_rand(0,8);
  15.         return $userAgents[$random];
  16. }
  17.  
  18. function my_user($url){
  19.         $curl = curl_init();
  20.         $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
  21.         $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
  22.         $header[] = "Cache-Control: max-age=0";
  23.         $header[] = "Connection: keep-alive";
  24.         $header[] = "Keep-Alive: 300";
  25.         $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
  26.         $header[] = "Accept-Language: en-us,en;q=0.5";
  27.         $header[] = "Pragma: ";
  28.         curl_setopt_array($curl, array(
  29.                 CURLOPT_URL => $url,
  30.                 CURLOPT_USERAGENT => getRandomUserAgent(),
  31.                 CURLOPT_HTTPHEADER => $header,
  32.                 CURLOPT_REFERER => 'http://www.google.com',
  33.                 CURLOPT_RETURNTRANSFER => true,
  34.                 CURLOPT_CONNECTTIMEOUT => 120,
  35.                 CURLOPT_FOLLOWLOCATION => true,
  36.                 CURLOPT_HEADER => false,
  37.                 CURLOPT_TIMEOUT => 10
  38.         ));
  39.         $data = curl_exec($curl);
  40.         curl_close($curl);
  41.         sleep(mt_rand(2,4));
  42.         return $data;
  43. }
  44.  


В задании не было указано в каком формате находиться контент с ссылок и по какому принципу его парсить. Между тем, опираясь на вышеуказанные функции, легко заменить file_get_contents() на my_user(), хотя и так всё работает)

(Отредактировано автором: 01 Апреля, 2015 - 12:46:07)

 
 Top
dimaua2
Отправлено: 01 Апреля, 2015 - 13:34:46
Post Id



Посетитель


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


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




При парсенге контента с чужого сайта, что бы ваш ип не попал в бан все же стоит имитировать пользователя, чем просто "брать" контент)
Если вас забанят на сервере, что будете делать? искать прокси? впн? искать нового донора?
меня еще тьху тьху не банили...
 
 Top
Hidalgo
Отправлено: 01 Апреля, 2015 - 13:36:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Февр. 2012  
Откуда: Димитровград


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




Вот http://xdan[dot]ru/Uchimsya-parsit-s[dot][dot][dot]-DOM-Parser[dot]html хорошая статья как парсить с помощью PHP Simple HTML DOM Parser.
 
 Top
dimaua2
Отправлено: 01 Апреля, 2015 - 14:46:38
Post Id



Посетитель


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


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




Hidalgo пишет:
Вот http://xdan[dot]ru/Uchimsya-parsit-s[dot][dot][dot]-DOM-Parser[dot]html хорошая статья как парсить с помощью PHP Simple HTML DOM Parser.
зря советуете.....значит вряд ли работали с ним....
 
 Top
Hidalgo
Отправлено: 01 Апреля, 2015 - 16:24:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Февр. 2012  
Откуда: Димитровград


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




dimaua2 пишет:
Hidalgo пишет:
Вот http://xdan[dot]ru/Uchimsya-parsit-s[dot][dot][dot]-DOM-Parser[dot]html хорошая статья как парсить с помощью PHP Simple HTML DOM Parser.
зря советуете.....значит вряд ли работали с ним....

Работал, парсил им товары с dx.com. Именно с переходам по страницам, с сохранением изображений и прочее.
 
 Top
dimaua2
Отправлено: 01 Апреля, 2015 - 16:47:40
Post Id



Посетитель


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


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




Hidalgo пишет:
dimaua2 пишет:
Hidalgo пишет:
Вот http://xdan[dot]ru/Uchimsya-parsit-s[dot][dot][dot]-DOM-Parser[dot]html хорошая статья как парсить с помощью PHP Simple HTML DOM Parser.
зря советуете.....значит вряд ли работали с ним....

Работал, парсил им товары с dx.com. Именно с переходам по страницам, с сохранением изображений и прочее.

В отличии от пхп квери, если симпл дум не найдет в статье определенный див, что указали, то весь скрипт вываливается в фатал ерор, сталкивались с таким?)
 
 Top
Hidalgo
Отправлено: 01 Апреля, 2015 - 18:00:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Февр. 2012  
Откуда: Димитровград


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




dimaua2 пишет:
Hidalgo пишет:
dimaua2 пишет:
Hidalgo пишет:
Вот http://xdan[dot]ru/Uchimsya-parsit-s[dot][dot][dot]-DOM-Parser[dot]html хорошая статья как парсить с помощью PHP Simple HTML DOM Parser.
зря советуете.....значит вряд ли работали с ним....

Работал, парсил им товары с dx.com. Именно с переходам по страницам, с сохранением изображений и прочее.

В отличии от пхп квери, если симпл дум не найдет в статье определенный див, что указали, то весь скрипт вываливается в фатал ерор, сталкивались с таким?)

Нет не сталкивался. Перед тем как парсить, страница анализируется и изучается на предмет определенных "хелперов": id элемента, class, тэги и прочее. Затем уже с помощью этих данных парсятся определенные элементы на странице. А она одинаковая, что первая страница, что 100500-ая. И все дивы и элементы на странице будут одни и теже. Поэтому мне не понятно, как парсер не сможет найти определенный элемент.
 
 Top
dimaua2
Отправлено: 02 Апреля, 2015 - 06:49:54
Post Id



Посетитель


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


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




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

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

(Отредактировано автором: 02 Апреля, 2015 - 06:55:37)

 
 Top
Hidalgo
Отправлено: 03 Апреля, 2015 - 08:58:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Февр. 2012  
Откуда: Димитровград


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




dimaua2 пишет:
ясн Радость
значит у вас не было сайтов статейников, где в одной статье есть например див с галерей, в другой статье его нет, он там не зачем...) попробуйте, много нового узнаете и ошибок много новых повидаете, когда не найдя этот див, скрипт завершится полностью с фатал ерором...)

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

Вы пошли в глубокие дебри. У ТС задача спарсить текст. Пусть попробует, варианты лишними не бывают.

(Отредактировано автором: 03 Апреля, 2015 - 09:00:15)

 
 Top
xuor
Отправлено: 03 Апреля, 2015 - 09:27:37
Post Id


Новичок


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


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




Hidalgo пишет:
dimaua2 пишет:
ясн Радость
значит у вас не было сайтов статейников, где в одной статье есть например див с галерей, в другой статье его нет, он там не зачем...) попробуйте, много нового узнаете и ошибок много новых повидаете, когда не найдя этот див, скрипт завершится полностью с фатал ерором...)

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

Вы пошли в глубокие дебри. У ТС задача спарсить текст. Пусть попробует, варианты лишними не бывают.


Поясните, пожалуйста, чем сторонние библиотеки такие как phpQuery и php simple html dom parser эффективнее регулярного выражения для парсинга контента?

(Отредактировано автором: 03 Апреля, 2015 - 09:29:15)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB