Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从.php页面获取所有链接?_Php_Hyperlink_Screen Scraping - Fatal编程技术网

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

如何从.php页面获取所有链接?,php,hyperlink,screen-scraping,Php,Hyperlink,Screen Scraping,我在一个网站上打开了一个.php页面,上面有很多超链接。我想把它们(它们的URL)复制到一个.txt文件中。当然,我可以手动完成,但是它们太多了,所以我想自动完成 在我这样做之前:我会查看页面源代码,也就是它的HTML代码,然后用一些专门为此编写的小脚本对其进行解析。但是这是一个.php页面,所有的链接都是从服务器上的数据库导入的,我猜,而不是从源代码导入的。无论如何,它们不在页面的HTML代码中 我想知道这是否仍然可行。我相信这应该是可能的-所有的链接都显示在我的屏幕上,它们都可以点击并工作,

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

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

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

你需要做什么

使用php的CURL库将页面作为字符串获取。或者最好使用
file\u get\u contents

$homepage=文件获取内容('http://www.example.com/');

使用DomDocument库构建html文档

从这里,您可以获取html中的所有
标记,并获取href元素。通过调用
$elements=$doc->getElementsByTagName(“a”)

然后只需在元素上迭代即可获得href

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

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

我的理解是,您希望从浏览器本身执行此操作:在这种情况下,使用chrome open debug panel(按F12)进入console选项卡,粘贴以下代码并按enter,然后从console复制链接列表并放入txt文件

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

对于(var i=0;iYou可以使用相同的脚本来解析链接。您尝试过吗?如果它们没有显示在源代码中,那么它们是通过javascript添加的,而不是您尝试过的phpHave?也许您会在这里找到您想要的内容?使用
file\u get\u contents()
你也可以用同样的脚本来完成。确保你的控制台被全部过滤,而不是调试。哇!!!它就是这样工作的!谢谢。你能告诉我你的代码是用什么语言编写的吗?很简单的Javascript:)啊!我懂了。我不知道Chrome接受Javascript。再次感谢@HarryDenley-谢谢你!你知道互联网上有什么资源可以让我学习如何使用Javascript的控制台吗?
var tags = document.getElementsByTagName("a");
for(var i=0;i<tags.length;i++) {
    console.log(tags[i].getAttribute("href"));
}