-3

我正在尝试使用 CURL 抓取一些网站。为了更改相对 URL,我插入了以下内容:

 $curl_scraped_page = preg_replace("/<head>/i", "<head><base href='$url' />", $curl_scraped_page, 1);

它适用于大多数网站,但并非所有网站。例如,这个网站“ NS Website ”显示完全没有效果,这意味着 URL 是用我的域作为基本 url 完成的:mydomain.com/css.css

这是我使用的完整代码:

<?php

$url = $_GET['url'];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$curl_scraped_page = curl_exec($ch);

$curl_scraped_page = preg_replace("/<head>/i", "<head><base href='$url' />", $curl_scraped_page, 1);

curl_close($ch);

echo $curl_scraped_page;

?>

phpfiddle 上的实时示例

4

1 回答 1

1

您的问题出在正则表达式中。

您正在寻找<head>,但给定示例的网站有一个<head profile="http://gmpg.org/xfn/11">.

将您的正则表达式替换为:

$curl_scraped_page = preg_replace("/<head.*>/i", "<head><base href='$url' />", $curl_scraped_page, 1);
于 2013-05-05T09:39:34.820 回答