2010-06-03 47 views
2

(非英語母語者)檢索第一畫面與一個HTML解析器

我做在PHP一個個人項目中,我使用Simple HTML Parser解析給定的URL的HTML和檢索DIV中的第一個圖像具有特定的ID或類(maincontent,content,main,wrapper等 - 全部在數組中)並忽略廣告。我們的目標是拍攝這張照片並製作縮略圖,就像Digg和其他人一樣。

我以爲一切正常,直到我嘗試我的腳本與網站Snopes(「http://www.snopes.com/photos/animals/luckycoyote.asp」< - 更準確地說這個頁面)。

它獲得的第一圖像的來源是:「圖形/ luckycoyote1.jpg」。到目前爲止,爲了糾正這個問題,我創建了一個小函數,它獲取給定URL的域名並將其插入到IMG的源屬性之前。因此,對於像Snopes.com這樣的網站,它給了我:「http://www.snopes.com/graphics/luckycoyote1.jpg」...而真實此圖片的Snopes網址爲「http://www.snopes.com*/photos/animals/*** graphics/luckycoyote1.jpg」(或更準確地說: 「HTTP:// ** graphics1 .snopes.com /照片/動物/圖形/ luckycoyote1.jpg」 - 注意這裏的子域)。

所以,我的主要問題是:當我只給予「相對路徑」時,如何在外部/動態檢索圖像的完整URL地址(「絕對路徑」)?我很確定這是可能的,因爲當我將鏈接粘貼到Facebook的「你在做什麼?」時例如,它給了我正確的路徑圖像,而在網站上,圖像的來源只是(示例)「image/photo/example.jpg」。

謝謝你的時間。

回答

3

當你得到一個相對圖形的URL 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代替。

+0

非常感謝您的回覆。我會盡快嘗試,並提供反饋,如果它能正常工作。 – Justin01 2010-06-03 19:28:27

+0

嘿馬特,我只是有機會做出所需的修改,並且dirname函數爲我提供了適當的路徑。 不幸的是,好像Snopes不希望人們直接鏈接到他們的圖片(即使認爲這不是我想要做的),因爲當我從腳本中顯示圖像時,它給了我這個圖像:http:/ /67.19.222.106/club21.gif。奇怪,因爲Facebook沒有問題得到正確的圖像。 我能做些什麼嗎?再次感謝。 – Justin01 2010-06-03 20:45:00

+0

這可能是引用者檢查Snopes方面的問題。如果是這種情況,你可以做的事情很少,但有辦法。 Google會成爲你的朋友,因爲我不知道他們。 – 2010-06-04 04:37:47

0

在你的情況我的猜測是,有一個服務器重定向正在進行,唯一真正的方法將是你嘗試做一個Web請求獲得使用「默認域」當你初步完成了形象,然後在此過程中查看重定向到的位置/內容。

+0

感謝您抽出做出響應的時間。我認爲你的解決方案「不在我的聯盟」,但我想我必須做一些研究,看看這是否可行。 – Justin01 2010-06-03 19:24:43