Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2016, 14:17   #1
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию Парсинг сайта с помощью CURL

Доброго времени суток, пытаюсь сделать парсинг сайта по видео уроку, но даже по видео уроку у меня не получается, уже несколько дней мучаюсь, подскажите кто знает
вот файл index.php
PHP код:
$start microtime(true);

set_include_path(get_include_path().PATH_SEPARATOR.'library/'); 
set_include_path(get_include_path().PATH_SEPARATOR.'phpQuery/'); 

require(
'config.php');

function 
__autoload$className ) {require_once( "$className.php" );}


echo 
"<br>".date('H:i:s')." Начинаем парсинг ".URL;
 
//Вариант 2 - парсинг с помощью phpQuery из тела сайта http://spanch-bob.org/
$pageText =new Curl();
$page=$pageText->get_page(URL);
$cat_page phpQuery::newDocument($page); 
$paginator $cat_page->find('ul#menu4 > li');
foreach (
$paginator as $link){
 
  
$a=pq($link)->html();
  
$a=pq($a)->attr('href');
  
var_dump($a);

вот файл config.php
PHP код:
<?php 
//настройки пподключения к сайту который парсим
define(URL,         'http://spanch-bob.org/'); //адрес сайта который будем парсить

//настройки подключения к БД чтобы записывать результаты парсинга
define(DB_HOST,     'localhost');
define(DB_DATABASE'testpars');
define(DB_USERNAME'root');
define(DB_PASSWORD'');

//настройки скрипта
define(SAVEPATH,             'img/'); //папка сохранения картинок
define(BASEPATH,             'library'); //папка с php библиотеками
define(COOKIE_PATH,         realpath(dirname(__FILE__).'/../')); //куда сохранять куки для авторизации

error_reporting(E_ALL); 
ini_set('display_errors'1);
ini_set('display_startup_errors'1);
ini_set('max_execution_time''18000000'); //время выполнения скрипта

function del_postfix($name) { // убираем постфикс к картинке
     
     
$posvstrripos($name'?');    
     if (
$posv>0) { 
         
$del substr($name$posvstrlen($name) );
         
$namesubstr_replace($name''$posvstrlen($name)) ;
     }
         
     return  
$name;
}
делаю все это локально на Windows 7 и Open Server, при выполнении файла ndex.php мне выдает 14:10:36 Начинаем парсинг http://spanch-bob.org/
14:10:36 Готово! Процесс выполнялся 0.0610 сек., и все, а в видео уроках выдает целый список url-ов, скажите что я делаю не так, очень сложно мне это все дается так как не опыта, заранее благодарен, если нужно прикрепить еще какие нибудь файлы я готов это сделать, просто пока не знаю какие
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 26.07.2016, 14:22   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Перед запросом страницы установите опцию для curl'a CURLOPT_FOLLOWLOCATION в true. Сайт же редирект шлет.
p51x вне форума Ответить с цитированием
Старый 26.07.2016, 14:25   #3
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Дак вроде все верно! А что именно нужно достать с этого сайта ?

Как я понял, он берет $paginator = $cat_page->find('ul#menu4 > li');

Нужно найтине елементы на странице которые нужны вам, и просписать ихсюда.
Как примерт:

PHP код:

$paginator 
$cat_page->find('div#video > href'); 

PS: наверное я тупонул, не слабо так. Если не в тему, простите!
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 26.07.2016 в 14:28.
pompiduskus вне форума Ответить с цитированием
Старый 26.07.2016, 15:29   #4
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Перед запросом страницы установите опцию для curl'a CURLOPT_FOLLOWLOCATION в true. Сайт же редирект шлет.
Скажите пожалуйста в каком файле и как именно это нужно прописать, удивляет то что у чувака на видео все работает а у меня нет
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 26.07.2016, 15:31   #5
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Дак вроде все верно! А что именно нужно достать с этого сайта ?
в этом видео уроке он парсит категории с этого сайта, мне бы любой другой сайт и пример рабочего парсинга, я делаю для опыта, учусь просто
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 26.07.2016, 15:59   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Скажите пожалуйста в каком файле и как именно это нужно прописать
ну посмотрите, типа
Код:
$pageText->setopt(CURLOPT_FOLLOWLOCATION, true);
Цитата:
удивляет то что у чувака на видео все работает а у меня нет
Все в этом мире меняется, вот и сайт переехал на другой домен

Цитата:
в этом видео уроке он парсит категории с этого сайта, мне бы любой другой сайт
ну так возьмите новый адрес этого сайта и пробуйте
p51x вне форума Ответить с цитированием
Старый 26.07.2016, 16:23   #7
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

по видео он парсит сайт spanch-bob.org но щас он стал http://igroutka.net/, он сам редиректит, но я пробовал и так и так, результат не меняется, но там главное то что структура сайта поменялась, я так думаю. Но в любом случае, если убрать find('ul#menu4 > li'); и написать find('ul > li'); я же должен получить все тэги li с сайта?
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 26.07.2016, 16:28   #8
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
ну посмотрите, типа
Код:
$pageText->setopt(CURLOPT_FOLLOWLOCATION, true);
Добавил в файл index.php
PHP код:
$pageText->setopt(CURLOPT_FOLLOWLOCATIONtrue); 
Теперь выдает ошибку
Fatal error: Call to a member function setopt() on a non-object in C:\OpenServer\domains\videoparsing. loc\index.php on line 7
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 26.07.2016, 17:04   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
$pageText->options['CURLOPT_FOLLOWLOCATION'] = true;
Цитата:
Но в любом случае, если убрать find('ul#menu4 > li'); и написать find('ul > li'); я же должен получить все тэги li с сайта?
Структура поменялась скорее всего, хотя я не знаю каким был раньше, но ссылок в меню4 теперь не видно.

Последний раз редактировалось p51x; 26.07.2016 в 17:07.
p51x вне форума Ответить с цитированием
Старый 26.07.2016, 17:27   #10
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
$pageText->options['CURLOPT_FOLLOWLOCATION'] = true;
Структура поменялась скорее всего, хотя я не знаю каким был раньше, но ссылок в меню4 теперь не видно.
да структура точно поменялась, да это и не важно, мне бы хоть что нибудь получить с этого или другого сайта чтобы научиться работать таким методом через Curl
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг с https с помощью curl (Facebook) pusu PHP 1 26.03.2014 19:48
Получить все запросы с помощью curl CodeNOT PHP 0 19.02.2014 12:04
curl и моб. версия сайта Abuhamed PHP 4 16.09.2013 05:13
Парсинг гугл-переводчика: simple HTML DOM и/или cURL? Artkuznya PHP 2 19.07.2013 12:54
Парсинг ч/з cURL, работа с печеньками... DEMOgoT PHP 1 24.09.2011 21:34