使用HTML解析器检索第一张图片

时间:2010-06-03 19:02:38

标签: php parsing

(不是以英语为母语的人)

我正在使用PHP进行个人项目,其中我使用Simple HTML Parser来解析给定URL的HTML并检索DIV中具有特定ID或类的第一个图像(maincontent,content, main,wrapper等 - 它都在一个数组中)并忽略广告。目标是拍摄这张图片并用它制作缩略图,就像在Digg和其他人身上一样。

我认为一切正常,直到我尝试使用网站Snopes(“http://www.snopes.com/photos/animals/luckycoyote.asp”< - 此页面更精确)我的脚本。

它获得的第一个图像的来源是:“graphics / luckycoyote1.jpg”。到目前为止,为了纠正这个问题,我创建了一个小函数,它获取给定URL的域名,并在IMG的源属性之前插入它。所以对于像Snopes.com这样的网站,它给了我:“http://www.snopes.com/graphics/luckycoyote1.jpg”...而此图片的Snopes上的真实网址是“http://www.snopes.com * /照片/动物/ ***图形/ luckycoyote1.jpg“(或更准确地说:”http:// ** graphics1 .snopes.com / photos / animals / graphics / luckycoyote1.jpg“ - 注意子域名这里)。

所以我的主要问题是:当我只给出“相对路径”时,如何在外部/动态检索图像的完整URL地址(“绝对路径”)?我很确定这是可能的,因为当我在Facebook上粘贴链接时“你在做什么?”例如,它给了我正确的图像路径,而在网站上,图像的来源只是(例如)“image / photo / example.jpg”。

感谢您的时间。

2 个答案:

答案 0 :(得分:3)

当您获得相对图片网址graphics/luckycoyote1.jpg时,这意味着src=""代码不以/开头,您应该使用您浏览的当前路径,而不是使用域名。

要在PHP中运行dirname('http://www.snopes.com/photos/animals/luckycoyote.asp'),它将返回您需要的路径。坚持在graphics/luckycoyote1.jpg前面,你会得到你的形象。

graphics1.snopes.com会在服务器上自动发生,您不必担心它。当图片src=""/开头时,请改为使用域名http://www.snopes.com

答案 1 :(得分:0)

在你的情况下,我的猜测是有一个服务器重定向正在进行,唯一真正的方法是你尝试发一个web请求,以便在你最初完成时使用“默认域”获取图像,然后在此过程中查看重定向到的位置/内容。