【问题标题】:How to get all the links from a .php page? [closed]如何从 .php 页面获取所有链接? [关闭]
【发布时间】:2014-01-21 02:33:51
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以使用相同的脚本来解析链接。你试过了吗?
  • 如果它们没有显示在源代码中,那么它们是由 javascript 添加的,而不是 php
  • 你试过preg_match_all吗?
  • 也许你会在这里找到你想要的东西stackoverflow.com/questions/34120/html-scraping-in-php
  • 使用file_get_contents()你也可以通过相同的脚本来完成

标签: php hyperlink screen-scraping


【解决方案1】:

你需要做什么。

使用 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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 确保您的控制台被过滤到所有,而不是调试。 See Image - Chrome
    • 哇!!!它就像那样工作!谢谢你。请您告诉我您的代码是用什么语言编写的?
    • 这是简单的 Javascript :)
    • 啊!我知道了。我不知道 Chrome 接受 Javascript。再次感谢!
    • @HarryDenley - 谢谢!你知道互联网上有什么资源可以让我学习如何通过 Javascript 使用该控制台吗?
    猜你喜欢
    • 2020-02-29
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2022-10-07
    • 1970-01-01
    相关资源
    最近更新 更多