2017-04-06 358 views
1

我使用Python來下載谷歌藝術一個網頁(如Portrait of Anthony Valabrègue),其中包含像斑點圖片:img src = blob:如何下載圖片?

<img src="blob:https://www.google.com/c8c0132a-1ab7-453b-844c-0aab6449af69"> 

我怎樣才能下載此圖片?使用URL blob:https://www.google.com/c8c0132a-1ab7-453b-844c-0aab6449af69直接下載不起作用。所述圖像由它們位於DIV使用XPath

$x('//*[@id="yDmH0d"]/div/div/div[1]/div/div[1]/div[4]/div[11]') 

圖像存儲在blob第6塊。

理想情況下,我希望能夠使用scrapy庫從網頁下載此類圖像。我知道如何爲常規網址做到這一點,但不適用於blob:https

是的,有一個簡單的方法可以找到一個常規鏈接到這個網頁上的小型圖像。但我想獲得更高的分辨率,這就是爲什麼我需要下載存儲在blob s中的6個不同的瓷磚。

+0

我懷疑實際圖像的位由JavaScript填補,而不是其他訪問。 – 9000

+0

@ 9000,有沒有辦法讓這從python? (可能會從python調用一些JavaScript)。我颳了一個大網站,並希望使用'scrapy'庫。 – Temak

+0

你可以發佈什麼網站你刮?通常你可以請求'src',然後將'response.body'保存到文件中。 – Granitosaurus

回答

0

我想你是在錯誤的地方尋找你的形象。
您正在抓取的網站充滿了javascript混亂,這使得它有點難以通過dom檢查找到圖像,所以在這種情況下,您需要挖掘源頁面本身。你可以找到你正在尋找這個特定的圖像

一個地方是在<meta>標籤:

def parse(self, response): 
    item = response.xpath('//meta[@property="og:image"]/@content').extract_first() 
    #'https://lh5.ggpht.com/-HvgLbwqJ7Yy1iF9imtgsGhVDBDafmvTnDRZSCKl_PNjMT_KXaoNLuO4A7tb4Q' 
    yield Request(item, self.parse_image) 

def parse_image(self, response): 
    with open('image.jpg', 'w') as f: 
     f.write(response.body) 
+0

對不起,以前沒有說清楚,但我特別想**提取6塊瓷磚並縫合它們,因爲這會產生**更高分辨率的圖像**。是的,我看到我可以找到一個小圖片的定期鏈接。 – Temak