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