【问题标题】:Finding links on a page which are on same domain as the page查找与页面位于同一域的页面上的链接
【发布时间】:2014-06-06 18:52:15
【问题描述】:

我正在构建一个爬虫,它从网站的网页开始,例如 example.com,并找到该页面上位于同一域中的所有链接。

假设我们在这个页面上有example.com/hello.php、facebook.com/hello.php。所以我只想列出 www.example.com/hello.php。

我正在使用 PHP Simple HTML DOM Parser(simplehtmldom.sourceforge.net/)。

$html = file_get_html('http://www.example.com/');
// Find all links 
foreach($html->find('a') as $element) {
    $uri = $element->href;
    //Now how to check if $uri belongs to same domain?
}

【问题讨论】:

    标签: php web-crawler


    【解决方案1】:

    假设,您所有的 URL 都已经是绝对的* URL,如 http://example.com/hello.php。然后,您将使用parse_url 来获取所有 URL 的主机。

    php > $url = "http://example.com/hello.php";
    php > print parse_url($url, PHP_URL_HOST);
    example.com
    

    您现在只需将链接的主机与您当前正在抓取的网站的主机进行比较。如果比较主机还不够,您必须从主机中提取域。这并不容易,因为没有规则。不过,https://www.publicsuffix.org/ 拥有您完成此任务所需的所有信息。这包括一个 PHP URL 解析器库。

    *(不是绝对的 URLs 当然是在同一个域中,所以你不需要它们来做决定。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2013-01-31
      • 2013-10-26
      • 2019-08-02
      • 2011-05-30
      • 1970-01-01
      相关资源
      最近更新 更多