С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
1

Приведите простой пример cURL

04.06.2012, 16:54. Показов 2866. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.Приведите пожалуйста простой пример cURL: скажем есть страница: http://www.test1.ru/home.php и мне нужно чтобы он нашёл слово(ссылку) ТРОЛОЛО и кликнул на неё.Как будет выглядеть код?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
04.06.2012, 16:54
Ответы с готовыми решениями:

Простой пример простого uploada
Приведите Простой пример простого uploada

Нужен простой пример чтения PDF
дайте самый простой пример работы с файлом PDF на PHP

Не работает простой пример работы с SQL в php
Я новичок. Win 7, установлен Денвер, прочитал статью "Простой пример работы с базой данный в php....

Char это что и приведите пример к коду
char это что и приведите пример к коду int strrpos(string $where, char $what ) Данная функция...

12
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.06.2012, 18:24 2
Linked, с помощью CURL мы можем только получить данные, но найти ссылку можно либо с помощью написания регулярных выражений, либо с помощью специальных готовых классов. Я использовал свою регулярку. Вот этот скрипт сработает так, как вы описали выше.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
    // Адрес, на который отправляем запрос
    $URI = "http://www.test1.ru/home.php";
    
    // Ссылка, которую ищем (указывать только текст ссылки)
    $link = "ТРОЛОЛО";
    
    // Инициализируем сеанс CURL
    $main = curl_init( $URI );
    
    // Если сеанс инициализирован
    if( $main )
    {
        // Устанавливаем дополнительные опции
        // Опция указывает, что результат будет записан в переменную
        curl_setopt($main, CURLOPT_RETURNTRANSFER, 1);
        
        // Выполняем запрос
        $html = curl_exec( $main );
        
        // ============================================
        // ВНИМАНИЕ! ЕСЛИ КОДИРОВКА САЙТА, НА КОТОРЫЙ 
        // ВЫПОЛНЯЕТСЯ ЗАПРОС ОТЛИЧАЕТСЯ ОТ КОДИРОВКИ 
        // ДАННОГО ФАЙЛА, ПРОПУСТИТЕ ПЕРЕМЕННУЮ $html
        // ЧЕРЕЗ ФУНКЦИЮ iconv()
        // ============================================
 
        
        // Регулярное выражение для поиска ссылки
        // ============================================
        // ВНИМАНИЕ! ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ КОДИРОВКУ UTF-8
        // В КОНЦЕ РЕГУЛЯРНОГО ВЫРАЖЕНИЯ, ПОСЛЕ БУКВЫ "i"
        // ВПИШИТЕ БУКВУ "u"
        // ============================================
        
        $link = trim( $link );
                
        preg_match('/<a(.*)href\s*=\s*"\s*([a-z\-\_\/\.\:]*)s*"(.*)>\s*'.$link.'\s*<\s*\/\s*a>/i', $html, $found);
        
        // Ссылка, найденная в файле
        $link_found = $found[2];
        
        // Переходим по полученной ссылке
        $transition = curl_init( $link_found );
        
        // Опция указывает, что результат будет записан в переменную
        curl_setopt( $transition, CURLOPT_RETURNTRANSFER, 1 ); 
        
        // Выполняем запрос
        if( curl_exec( $transition ) )
        {
            echo "Клик по ссылке успешно выполнен";
        }
        
        // Закрываем сейчас клика по ссылке
        curl_close( $transition );
    }
    else
    {
        echo "Не удалось инициализировать сеанс CURL. Возможно у вас не установлена данная библиотека.";
    }
    
    // Завершаем сеанс CURL
    curl_close( $main );
?>
2
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
04.06.2012, 19:50  [ТС] 3
Спасибо)
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
15.04.2014, 21:42 4
Извиняюсь, что поднял старую тему, нашёл, стал тестировать этот скрипт.

В качестве параметров использовал:
PHP
1
2
    $URI = "http://www.puzzleweb.ru/php/00_teacher.php";
    $link = "Переменные";
Пишет: Notice: Undefined offset: 2 in /var/www/gyuzel/data/www/test2.gyuzel-nn.ru/n_curl1.php on line 45

А строка 45 это:
PHP
1
$link_found = $found[2];
found[2] получается получается пустая, проверил var_dump так и есть array(0) { }

На большее меня пока не хватило, так почему не находит, где ошибка? В регулярке что ли?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
16.04.2014, 08:20 5
marrk, попробуйте так:
PHP
1
preg_match('~<a(.*)href\s?=\s?"([^"]*)"(.*)>\s?'.$link.'\s?</a>~iu', $html, $found);
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
16.04.2014, 09:26 6
Не работает, то же самое пишет:
PHP
1
preg_match('~<a(.*)href\s?=\s?"([^"]*)"(.*)>\s?'.$link.'\s?</a>~iu', $html, $found);
Решил упростить. Ищу на странице http://h65449.srv4.test-hf.ru/test.htm

Варианты:

PHP
1
2
3
4
5
6
7
preg_match('/Яндекс/i', $html, $found);  // Undefined offset: 2 in ($found[2];) в общем
preg_match('/Яндекс/u', $html, $found);  // То же самое
preg_match('~Яндекс~iu', $html, $found);  // То же самое
preg_match('~<a(.*)>Яндекс<(.*)a>~iu', $html, $found);  // То же самое
preg_match('~<a(.*)>(.*)<(.*)a>~iu', $html, $found);  // То же самое
preg_match('~<a href="http://www.yandex.ru/">Яндекс</a>~iu', $html, $found);  // То же самое
preg_match('~<a href="http:\/\/www.yandex.ru\/">Яндекс<\/a>~iu', $html, $found);  // То же самое
Понимаю что мы тут скорее на регулярки скатываемся, но по cURL тоже ещё есть вопросы curl_setopt, например, это обязательный атрибут в любом curl?
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
16.04.2014, 09:39 7
marrk,
PHP
1
var_dump($html);var_dump($found);
в какой кодировке у тебя файл php??
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
16.04.2014, 09:58 8
var_dump($html);var_dump($found);
Так делал уже. Выводит всю искомую страницу h65449.srv4.test-hf.ru/test.htm но внизу:
array(0) { } Notice: Undefined offset: 2 in .........php on line 49

Массив-то пустой, значит либо регулярка не работает, либо в curl_setopt надо ещё что-то добавить.
php-файл в utf-8 конечно
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
16.04.2014, 10:00 9
Цитата Сообщение от marrk Посмотреть сообщение
php-файл в utf-8 конечно
ай да молодец конечно
только страница откуда ты парсишь win1251
а в самом начале скрипта написано
Цитата Сообщение от lyod Посмотреть сообщение
// ============================================ // ВНИМАНИЕ! ЕСЛИ КОДИРОВКА САЙТА, НА КОТОРЫЙ // ВЫПОЛНЯЕТСЯ ЗАПРОС ОТЛИЧАЕТСЯ ОТ КОДИРОВКИ // ДАННОГО ФАЙЛА, ПРОПУСТИТЕ ПЕРЕМЕННУЮ $html // ЧЕРЕЗ ФУНКЦИЮ iconv() // ============================================
1
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
16.04.2014, 10:12 10
А блин, точно тупанул я. Если я правильно понял надо так:

PHP
1
iconv("windows-1251", "UTF-8", $html);
Только в каком месте скрипта это делать?
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
16.04.2014, 10:17 11
PHP
1
$html = iconv("WINDOWS-1251", "UTF-8", $html);
после
PHP
1
$html = curl_exec( $main );
я думаю
хотя можно строки объеденить
PHP
1
$html = iconv("WINDOWS-1251", "UTF-8", curl_exec( $main ));
1
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
16.04.2014, 10:34 12
Да, всё работает, клик по ссылке успешно выполнен.

Вот вопрос по этой же теме если у меня немного другая задача стоит, например <title> забрать со страницы регуляркой
PHP
1
2
if (preg_match('|<title.*?>(.*)</title>|sei', $str, $arr)) $title = $arr[1];
   else $title='';
То я в curl_setopt должен другие параметры задавать? Как определить какие параметры для этого требуются?
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
16.04.2014, 10:40 13
Цитата Сообщение от marrk Посмотреть сообщение
То я в curl_setopt должен другие параметры задавать?
зачем? титл также находится в html а вот регулярку я бы взял другую
Perl
1
<title>([^<]+)</title>
0
16.04.2014, 10:40
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
16.04.2014, 10:40
Помогаю со студенческими работами здесь

Php+Html!? как кнопке определить в событие по клику фун-цию php!? синтаксис любой пример приведите
по клику на кнопке обычной а вообще мне надо стереть один файл просто по клику, вот сижу и думаю...

Простой пример метода ajax
Здравствуйте! Нужна ваша помощь. Только начала изучать метод метод ajax. Разобранный пример в...

Простой пошаговый пример Yii2
Бонжур месье и мадам! Кто б помог ссылкой на простой пошаговый пример создания элементарной вещи...

Простой пример использования базы данных
Здравствуйте. Скиньте пожалуйста ссылки или готовые примеры для использование базы данных. Так как...

Приведите простой пример Рекурсии
Приведите один или несколько простых примеров Рекурсии на TP с пояснениями

Приведите самый простой пример гомоморфизма
Приведите самый простой пример гомомризма, пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru