Перейти к содержимому


Взятие текста с сайта через внешнюю форму

внешняя форма JavaSrcipt

Сообщений в теме: 8

#1 Marid

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений
  • Пол:Мужчина

Отправлено 12 Июнь 2015 - 01:44

Добрый день, имеется внешняя форма к таблице. хочется сделать так, чтобы при вставке в поле ссылки на сайт, дальнейшие поля отсортировывались в зависимости от текста, который находится на странице ссылки. Например, с помощью данного кода находится нужный текст на сайте: $('#column_right h1').text().

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

Заранее спасибо. Возможно ли это?

#2 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 12 Июнь 2015 - 13:50

Возможно. Для этого необходимо использовать программный эмулятор браузера, т.е. считывать удаленную страницу через код. Затем уже помещаете результат в текстовую переменную и производите с ней стандартные действия, такие как парсинг содержимого, поиск нужного фрагмента текста и т.д. Подключится и получить страницу можно разными средствами, например через cUrl, или используя класс snoopy (уже подключен в программе).

#3 Marid

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений
  • Пол:Мужчина

Отправлено 12 Июнь 2015 - 23:22

Просмотр сообщенияCbCoder (12 Июнь 2015 - 13:50) писал:

Возможно. Для этого необходимо использовать программный эмулятор браузера, т.е. считывать удаленную страницу через код. Затем уже помещаете результат в текстовую переменную и производите с ней стандартные действия, такие как парсинг содержимого, поиск нужного фрагмента текста и т.д. Подключится и получить страницу можно разными средствами, например через cUrl, или используя класс snoopy (уже подключен в программе).

Благодарю за то, что указали направление в котором стоит двигаться. Так вот, решил попробовать реализовать через curl, почитав форумы и манулы, решил взять за основу следующий код:
// Инициализируем курл
$ch = curl_init('адрес страницы донора');

// Параметры курла
curl_setopt($ch, CURLOPT_USERAGENT, 'IE20');
curl_setopt($ch, CURLOPT_HEADER, 0);
// Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экран
curl_setopt($ch, CURLOPT_RETURNTRANSFER, '1');

// Получаем html
$text = curl_exec($ch);

// Отключаемся
curl_close($ch);

// Находим и сохраняем нужный фрагмент
preg_match( '/<ul><li>(.*?)<\/li><\/ul>/is' , $text , $links );

// Выводим результат на экран
echo $links[0];

Путем рассуждений (неосложненных опытом и знаниями) у меня получился следующий код, но он не работает((( Прошу помощи, где моя ошибка, как сделать, чтобы работало?:


// // Инициализируем курл
$ch = curl_init('http://www.gutewetter.ru/catalogue/dushevye-ograzhdeniya/'); сайт с которого требуется взять текст

// Параметры курла
curl_setopt($ch, CURLOPT_USERAGENT, 'IE20');
curl_setopt($ch, CURLOPT_HEADER, 0);
// Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экран
curl_setopt($ch, CURLOPT_RETURNTRANSFER, '1');

// Получаем html
$text = curl_exec($ch);

// Отключаемся
curl_close($ch);

// Находим и сохраняем нужный фрагмент
preg_match( $('#column_right h1').text() , $text , $links ); \\ $('#column_right h1').text() - парсинг указанной ранее страницы. (нахождение нужного текста)

// Заносим результат в переменную из КБ

$line['ТЕСТ']=$text; //строка из таблицы, к которой применяется данное вычисление. Ее я использую для отладки полученного результата.

#4 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Июнь 2015 - 15:50

А в каком именно месте то не работает? В переменной $text есть что-нибудь? Если нет, то значит ошибка считывания, смотрите curl_error.

#5 Marid

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений
  • Пол:Мужчина

Отправлено 14 Июнь 2015 - 22:25

Просмотр сообщенияCbCoder (13 Июнь 2015 - 15:50) писал:

А в каком именно месте то не работает? В переменной $text есть что-нибудь? Если нет, то значит ошибка считывания, смотрите curl_error.

Изменил строку, убрал внешние скобки:

preg_match $('#column_right h1').text() , $text , $links ; // $('#column_right h1').text() - парсинг указанной ранее страницы. (нахождение нужного текста).

выдает ошибку: 39: // Находим и сохраняем нужный фрагмент

40:preg_match $('#column_right h1').text() , $text , $links ; // $('#column_right h1').text() - парсинг указанной ранее страницы. (нахождение нужного текста)
41:

syntax error, unexpected '$'

Что надо сделать, чтобы исправить?


по поводу переменной $text, дописал строку $text=''; - не ругается. но, как видно, дело не в ней

Сообщение отредактировал Marid: 14 Июнь 2015 - 22:28


#6 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Июнь 2015 - 09:08

Погодите, а что у вас в PHP делает функция из jQuery? Вообще-то, jQuery - это библиотека для JS, а не для PHP. Разумеется будет ошибка синтаксиса.

#7 Marid

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений
  • Пол:Мужчина

Отправлено 16 Июнь 2015 - 14:13

Просмотр сообщенияCbCoder (15 Июнь 2015 - 09:08) писал:

Погодите, а что у вас в PHP делает функция из jQuery? Вообще-то, jQuery - это библиотека для JS, а не для PHP. Разумеется будет ошибка синтаксиса.

Понял, благодарю. Тогда как именно стоит реализовывать парсинг? как реализовать то же самое средствами php? Если можно, то на примере кода)

#8 maksn

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

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 16 Июнь 2015 - 17:03

Просмотр сообщенияMarid (16 Июнь 2015 - 14:13) писал:

Понял, благодарю. Тогда как именно стоит реализовывать парсинг? как реализовать то же самое средствами php? Если можно, то на примере кода)

http://phphack.ru/catalog/parsers/
"...Сижу, паяю. CRM починяю..."
Мои разработки

#9 Marid

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений
  • Пол:Мужчина

Отправлено 17 Июнь 2015 - 00:04

Просмотр сообщенияmaksn (16 Июнь 2015 - 17:03) писал:

Благодарю!





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных