如何从.php页面获取所有链接?

时间:2014-01-03 12:12:05

标签: php hyperlink screen-scraping

我在一个网站上打开了一个.php页面,上面有一堆超链接。我想将它们(它们的URL)复制到.txt文件中。当然,我可以手动完成,但是它们太多,所以我想以某种方式自动完成。

在我这样做之前:我会查看页面源代码,即它的HTML代码,然后用专门为此编写的一些小脚本解析它。但是这个是一个.php页面,所有的链接都是从服务器上的数据库输入的,我想,而不是源代码。无论如何,它们不在页面的HTML代码中。

我想知道这是否还有可能。我相信它应该是可能的 - 所有链接都显示在我的屏幕上,它们都是可点击和工作的,应该以某种方式捕获它们。

2 个答案:

答案 0 :(得分:3)

我的理解是你想从浏览器本身做到这一点:在这种情况下使用chrome打开调试面板(按F12)并进入控制台选项卡并粘贴以下代码并按Enter键,然后从控制台复制链接列表并输入txt文件。

var tags = document.getElementsByTagName("a");
for(var i=0;i<tags.length;i++) {
    console.log(tags[i].getAttribute("href"));
}

答案 1 :(得分:0)

你需要做什么。

使用php的CURL库将页面作为字符串。或者更好的是使用file_get_contents

http://au1.php.net/file_get_contents

$homepage = file_get_contents('http://www.example.com/');

使用DomDocument库构建html文档。 http://au1.php.net/domdocument

$doc = new DOMDocument();
$doc->loadHTML($homepage);

从这里你可以获得html中的所有<a>标签并获取href元素。致电$elements = $doc->getElementsByTagName("a");

然后迭代获取href的元素。

foreach($elements as $el) {
    $link = $el->getAttribute("href");
    echo $link . "\n";
}
//untested code

然后,您可以在任何页面上重复使用该脚本,只需更改卷曲请求即可。