cURL получить страницу и исправить пути к стилям

12
S
На сайте с 13.11.2012
Offline
72
3417

Получаю код страницы с помощью

<?php
// инициализация сеанса
$ch = curl_init();

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "https://tumix.ru");
curl_setopt($ch, CURLOPT_HEADER, 0);

// загрузка страницы и выдача её браузеру
curl_exec($ch);

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

В результате получаю кривую страницу без стилей и скриптов т.к. пути к файлам не содержат доменного имени .../css/

Можно как-то это исправить?

Спасибо!

---------- Добавлено 19.06.2017 в 11:59 ----------

Разобрался, добавил <base href="https://tumix.ru/">

Но появился вопрос сложнее, можно ли самому задать title и description? Как?

Добавить свой код перед закрывающим body

Спасибо!

totamon
На сайте с 12.05.2007
Offline
437
#1
Smirnof:
Получаю код страницы с помощью
Цитата:

а хозяин страницы вам разрешил ее код получать?

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
plattoo
На сайте с 12.05.2010
Offline
195
#2
Smirnof:
Но появился вопрос сложнее, можно ли самому задать title и description? Как?
Добавить свой код перед закрывающим body

с помощью регулярных выражений различной степени сложности

например, так

$new_title = preg_replace('/\<title\>(.*?)\<\/title\>/si', '<title>Мотороллер не мой, я просто спарсил</title>', $page_source);
S
На сайте с 13.11.2012
Offline
72
#3
totamon:
а хозяин страницы вам разрешил ее код получать?

Естественно!

plattoo:
с помощью регулярных выражений различной степени сложности

например, так

Видимо сначала нужно сохранить результат в переменную и потом править?

Я не знаю как сохранять :(

Просто вставил ваш код после curl_exec($ch);

title не изменился.

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

<?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 );
?>
plattoo
На сайте с 12.05.2010
Offline
195
#4

вот так

$page_source = curl_exec($ch);

а потом уже регулярками правишь $page_source, как нужно

S
На сайте с 13.11.2012
Offline
72
#5

Нет, так и не могу изменить tilte, body

и в поисковиках не знаю, что искать...

---------- Добавлено 19.06.2017 в 14:38 ----------

Сделал так

<?php
// инициализация сеанса
$ch = curl_init();

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "https://tumix.ru");

// загрузка страницы и выдача её браузеру
// curl_exec($ch);

$page_source = curl_exec($ch);
$new_title = preg_replace('/\<title\>(.*?)\<\/title\>/si', '<title>Мотороллер не мой, я просто спарсил</title>', $page_source);

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

Title не изменился

plattoo
На сайте с 12.05.2010
Offline
195
#6

Smirnof, вы если в php не умеете, чего добиться хотите?

я ж пример привел, а не руководство к действию

$page_source = preg_replace('/\<title\>(.*?)\<\/title\>/si', '<title>Мотороллер не мой, я просто спарсил</title>', $page_source);
SI
На сайте с 03.12.2007
Offline
130
#7
Smirnof:
Нет, так и не могу изменить tilte, body
и в поисковиках не знаю, что искать...

---------- Добавлено 19.06.2017 в 14:38 ----------

Сделал так



Title не изменился

Опцию CURLOPT_RETURNTRANSFER не забывайте


// Опция указывает, что результат будет записан в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-= Онлайн сервисы =-
S
На сайте с 13.11.2012
Offline
72
#8
Sigmo#ID:
Опцию CURLOPT_RETURNTRANSFER не забывайте

Сделал так


<?php
// инициализация сеанса
$ch = curl_init();

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "https://tumix.ru");

// загрузка страницы и выдача её браузеру
// curl_exec($ch);

$page_source = curl_exec($ch);

// Опция указывает, что результат будет записан в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$page_source = preg_replace('/\<title\>(.*?)\<\/title\>/si', '<title>Мотороллер не мой, я просто спарсил</title>', $page_source);

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

Title не меняется, пробовал изменить preg_replace('/\<title\>(.*?)\<\/title\>/si'........ тоже не помогло

SI
На сайте с 03.12.2007
Offline
130
#9

Все curl_setopt() должны быть перед curl_exec()

И в конце, после замен preg_replace() нужно вывести результат:

echo $page_source;

S
На сайте с 13.11.2012
Offline
72
#10

Сделал так


<?php
// инициализация сеанса
$ch = curl_init();

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "https://tumix.ru");


// Опция указывает, что результат будет записан в переменную
curl_setopt($page, CURLOPT_RETURNTRANSFER, 1);

// загрузка страницы и выдача её браузеру
$page_source = curl_exec($ch);

$page_source = preg_replace('/\<title\>(.*?)\<\/title\>/si', '<title>Мотороллер не мой, я просто спарсил</title>', $page_source);

echo $page_source;

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

title не изменился :(

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий