Скрипт для изменения всех ссылок на странице на запросы скручивания - PullRequest
0 голосов
/ 17 мая 2011

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

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'URL FROM THE A HREF OF THAT PARTICULAR LINK');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$curl_response = curl_exec($ch);
curl_close($ch);
echo $curl_response;

Таким образом, когда ссылки нажимаются, это не направляет вас на исходную страницу, а запускает функцию curl и приводит вас на эту страницу.

P.S спасибо за редактирование, которое собиралось сделать, но вы пришли первым.

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

То есть вы пытаетесь написать прокси?Это уже сделано, и с открытым исходным кодом .

Возможно, вы захотите сделать замены в $ curl_responseЕсли страница использует относительные пути, вы можете просто добавить <base href="http://yourdomain.com" /> к <head>.Кроме того, вы можете str_replace('http://theirdomain.com/', '') удалить любые абсолютные пути.

1 голос
/ 17 мая 2011

Судя по вашим комментариям, недостающая часть, которую вы, возможно, ищете, может быть расширением PHP DOM или сопоставимой. По сути, вы хотите проанализировать HTML-код страницы, которую вы просматриваете, чтобы вы могли ее изменить.

Вы можете сделать это, сказав cURL, чтобы он возвращал вам источник страницы в виде строки (как вы делаете), а затем введите его в DOMDocument::loadHTML. Затем вы можете получить все ссылки, используя DOMDocument::getElementsByTagName (предоставляя 'a', возможно 'img' и несколько других, по вашему усмотрению).

Если у вас есть DOMNodeList , вы можете затем изменить их href -атрибуты, получив атрибут с ...->attributes->getNamedItem('href') (это, конечно, src для изображений, если вы зайти так далеко), настраивая содержимое с помощью атрибута ...->nodeValue, например:

$attributeNode->nodeValue = myURLtransform($attribute->nodeValue);

Наконец, вы должны использовать DOMDocument::saveHTML, чтобы получить измененный код, который вы затем можете echo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...