2012-04-23 22 views
0

我試圖從舊數據庫中捕捉一些圖像。我使用ruby(但也很熟悉php)直接打開()一個網站並閱讀它的內容。我有時也會使用該腳本來調用相應的curl ...命令。抓取頁面時動態生成圖像

但是,我從數據庫中取出某些數據返回一個頁面,然後使用服務器端腳本假設的一系列隨機數嵌入目標圖像和圖像名稱。例如:

<img ... show_image.jsp?343523.jpg

但是,我不能把這個show_image腳本直接(拒絕),只嵌入在網站作爲一個整體時的作品。

我可以使用捲曲或Ruby或PHP中做一些事情,它包括由show_image.jsp?343523.jpg產生的嵌入圖像的方式下載整個頁面,例如,1929.2.14.aspx

如果我直接簡單地捲曲aspx文件,我自然會得到html - 如何通過腳本以一種基於瀏覽器的「web archive」功能手動工作的方式保存html和嵌入式圖像?

任何提示,教程的鏈接,等等讚賞...

+0

我懷疑你可以調用腳本(?show_image.jsp 343523.jpg),你可能只需要指定網站網址作爲引薦來源。這實際上是當您的瀏覽器加載整個頁面時發生的情況。 – drew010 2012-04-23 21:54:49

+0

這可能適用於您... http://simplehtmldom.sourceforge.net/ – 2012-04-23 21:55:03

+0

如果您可以在瀏覽器中訪問它,則可以訪問它。最終腳本無法知道。也許你需要欺騙引用者@ drew010指出,或者你需要設置用戶代理,一個cookie或者其他一些請求頭。但它絕對是可以腳本化的。 – 2012-04-23 21:55:49

回答

0

你或許應該使用機械化刮網站的紅寶石。當你這樣做會設置Cookie和引薦給你,讓得到的圖像將是一樣簡單:直接

agent.get(image_url).save_as 'local_filename.jpg' 
+0

謝謝,這開闢了更多的選擇! – 2012-04-24 02:55:17

0

如果腳本(show_image.jsp - 舉例)做一個簡單的引薦檢查,你可以解決它通過編寫PHP(或Ruby)刮板以這樣的方式,從而使得GET之前設置引薦:

curl --referer http://www.example.com http://www.example.com/show_image.jsp?bar.jpg 
+0

引用者的想法是一個好主意,但不起作用。圖像的id號也隨每次重新加載而改變 - 我懷疑它是通過aspx頁面本身動態生成的,也許只加載一次?因此,我需要調用aspx頁面,並將圖像與它一起抓取......但是,謝謝您的試用! – 2012-04-23 22:11:24