2012-04-29 168 views
1

我嘗試改進recipecalibre,並用當前報紙問題的封面圖片替換默認封面圖片。從網站獲取圖像

要走的路要跟get_cover_urllink)有關。

有兩個問題:

  1. 封面圖片的URL每天都在改變。
  2. 我對python幾乎一無所知。

我希望這樣一個解決方案(僞代碼):

OPEN URL "http://epaper.derstandarddigital.at/"; 
coverElement = (SEARCH HTML-ELEMENT "<img>" WITH ID "imgPage2" AND CLASS "page"); 
coverUrl = (GET HTML-ATTRIBUTE "src" FROM coverElement); 
RETURN coverUrl; 

會不會有一種方法來實現這一目標在python *)(僅使用Python標準庫)?

*)口徑菜譜似乎是Python代碼

[編輯] 這裏是我的一個朋友提供的解決方案:

#!/usr/bin/env python 

import urllib 
from time import strftime 


def get_cover_url(self): 
    highResolution = True 

    date = strftime("%Y/%Y%m%d") 
    # it is also possible for the past 
    #date = '2012/20120503' 

    urlP1 = 'http://epaper.derstandarddigital.at/' 
    urlP2 = 'data_ep/STAN/' + date 
    urlP3 = '/V.B1/' 
    urlP4 = 'paper.htm' 
    urlHTML = urlP1 + urlP2 + urlP3 + urlP4 

    htmlF = urllib.urlopen(urlHTML) 
    htmlC = htmlF.read() 


    # URL EXAMPLE: data_ep/STAN/2012/20120504/V.B1/pages/A3B6798F-2751-4D8D-A103-C5EF22F7ACBE.htm 
    # consists of part2 + part3 + 'pages/' + code 
    # 'pages/' has length 6, code has lenght 36 

    index = htmlC.find(urlP2) + len(urlP2 + urlP3) + 6 
    code = htmlC[index:index + 36] 


    # URL EXAMPLE HIGH RESOLUTION: http://epaper.derstandarddigital.at/data_ep/STAN/2012/20120504/pagejpg/A3B6798F-2751-4D8D-A103-C5EF22F7ACBE_b.png 
    # URL EXAMPLE LOW RESOLUTION: http://epaper.derstandarddigital.at/data_ep/STAN/2012/20120504/pagejpg/2AB52F71-11C1-4859-9114-CDCD79BEFDCB.png 

    urlPic = urlP1 + urlP2 + '/pagejpg/' + code 

    if highResolution: 
     urlPic = urlPic + '_b' 

    urlPic = urlPic + '.png' 

    return urlPic 



if __name__ == '__main__': 
    print get_cover_url(None) 
+2

看到urllib2和美麗的湯 – jadkik94 2012-04-29 10:25:53

回答

3

可以使用lxml庫提取的HTML元素文件。基本框架將是這個樣子:

import urllib 
import lxml.html 

fd = urllib.urlopen('http://epaper.derstandarddigital.at/') 
doc = lxml.html.parse(fd) 
matches = doc.xpath('//img[@id="imgPage2]') 
if matches: 
    print matches[0].get('src') 

...但是,你所提供的URL實際上並不產生任何<img>標記一個文件內。它幾乎完全是一堆Javascript。

+0

謝謝!這是否意味着我的目標幾乎不可能? – speendo 2012-04-29 11:19:36

+1

不,這意味着你需要找出你想要的文件的實際URL。它看起來好像該網站可能正在加載一個框架集,所以也許你可以得到相應框架的URL。 – larsks 2012-04-29 11:20:44