php - 使用 PHP 抓取完整图像 src

标签 php path screen-scraping src

我正在尝试用 php 抓取 img src,我可以很好地获取 src,但是如果 src 不包含完整路径,那么我无法真正重用它。有没有办法使用php来获取图像的完整路径(如果使用右键菜单,浏览器可以获取它)。

即。如何获取包含以下两个示例之一中的域的完整路径?

src="../foo/logo.png"
src="/images/logo.png"

谢谢

艾伦

最佳答案

您不需要正则表达式...只需一些耐心。我真的不想为你编写代码,只是检查 src 是否以 http:// 开头,如果不是,你就会有 3 种不同的情况。

  1. 如果以 / 开头,则在前面添加 http://domain.com
  2. 如果它以 .. 开头,您必须 split完整的 URL 和 hack off pieces直到 src 以 /
  3. 开头
  4. 否则(以字母开头),则采用完整域,并且 strip it down to the last slash然后附加 src URL。

或者......偷懒并窃取这个脚本

$url = "http://www.goat.com/money/dave.html";
$rel = "../images/cheese.jpg";

$com = InternetCombineURL($url,$rel);

//  Returns http://www.goat.com/images/cheese.jpg

function InternetCombineUrl($absolute, $relative) {
    $p = parse_url($relative);
    if($p["scheme"])return $relative;
    
    extract(parse_url($absolute));
    
    $path = dirname($path); 

    if($relative{0} == '/') {
        $cparts = array_filter(explode("/", $relative));
    }
    else {
        $aparts = array_filter(explode("/", $path));
        $rparts = array_filter(explode("/", $relative));
        $cparts = array_merge($aparts, $rparts);
        foreach($cparts as $i => $part) {
            if($part == '.') {
                $cparts[$i] = null;
            }
            if($part == '..') {
                $cparts[$i - 1] = null;
                $cparts[$i] = null;
            }
        }
        $cparts = array_filter($cparts);
    }
    $path = implode("/", $cparts);
    $url = "";
    if($scheme) {
        $url = "$scheme://";
    }
    if($user) {
        $url .= "$user";
        if($pass) {
            $url .= ":$pass";
        }
        $url .= "@";
    }
    if($host) {
        $url .= "$host/";
    }
    $url .= $path;
    return $url;
}

来自http://www.web-max.ca/PHP/misc_24.php

关于php - 使用 PHP 抓取完整图像 src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162191/

相关文章:

python - 简单的动态网页抓取 - 没有 BeautifulSoup

ruby - 怎么看别人的论坛

php - 如何调试 PHP/HTML/MySQL 中的无效字符?

java - 如何从UriInfo获取相对路径

powershell - 使用 PowerShell 设置特殊文件夹的位置

c# - 为 iOS Unity 构建时出现文件路径问题

python - 检查python urlopen是否加载完成

javascript - 在 WordPress 中加载更多帖子 Ajax 按钮

javascript - Pusher 私有(private)还是公共(public)?

php - 我可以在 child 的命名空间中执行父方法吗?