如何从HTML页面中提取链接?

时间:2011-01-06 15:21:58

标签: php

我正在尝试用php下载文件。

$file = file_get_contents($url);

我应该如何在$ url ...

中下载文件中链接的内容

3 个答案:

答案 0 :(得分:2)

这需要解析HTML,这在PHP中是一个相当大的挑战。为了省去很多麻烦,请下载HTML解析库,例如PHPQuery(http://code.google.com/p/phpquery/)。然后,您必须选择pq('a')的所有链接,循环获取href属性值,并为每个链接将其从相对转换为绝对并运行file_get_contents生成的URL。希望这些指针可以让你开始。

答案 1 :(得分:1)

您想要查找给定文件中的所有网址吗? RegEx救援......以及下面的一些示例代码应该做你想做的事情:

$file = file_get_contents($url);
if (!$file) return;
$file = addslashes($file);

//extract the hyperlinks from the file via regex
preg_match_all("/http:\/\/[A-Z0-9_\-\.\/\?\#\=\&]*/i", $file, $urlmatches);

//if there are any URLs to be found
if (count($urlmatches)) {
    $urlmatches = $urlmatches[0];
    //count number of URLs
    $numberofmatches = count($matches);
    echo "Found $numberofmatches URLs in $url\n";

    //write all found URLs line by line
    foreach($urlmatches as $urlmatch) {
        echo "URL: $urlmatch...\n";
    }
}

编辑:当我正确理解您的问题时,您现在想要下载找到的网址的内容。您可以在每个URL的foreach循环调用file_get_contents中执行此操作,但您可能希望事先进行一些过滤(例如不下载图像等)。

答案 2 :(得分:0)

您需要手动或通过第三方插件解析生成的HTML字符串。

HTML Scraping in Php