我正在构建一个从网站的网页开始的抓取工具,例如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?
}
答案 0 :(得分:0)
假设您的所有网址都是 http://example.com/hello.php 中的绝对*网址。然后,您将使用parse_url
获取所有网址的主机。
php > $url = "http://example.com/hello.php";
php > print parse_url($url, PHP_URL_HOST);
example.com
您现在只需要比较您当前正在抓取的网站主机的链接主机。如果比较主机是不够的,则必须从主机中提取域。这并不容易,因为没有规则。 https://www.publicsuffix.org/具有此任务所需的所有信息。这包括一个PHP URL解析器库。
*(非绝对的网址当然位于同一个域中,因此您不需要它们来做出决定。)