无法打开使用漂亮的汤库下载的图像

时间:2013-06-05 19:01:53

标签: python beautifulsoup

我有一个脚本,可以使用BeautifulSoup库从网页下载图像。当我使用http://www.google.com等网站时,图片会正确下载到桌面上的文件夹中,然后我可以将其打开并查看。但是,当我使用https://sites.google.com/site/imagesizetesting/one-1等网站时,图像会显示下载到正确的文件夹桌面,但是我收到一条错误消息“Paint无法读取此文件。这不是有效的位图文件,或者目前不支持。“我认为这可能与谷歌主页的html文件中的文件路径是相对的这一事实有关,它是/images/srpr/logo4w.png,而https://sites.google.com/site/imagesizetesting/one-1上包含的图像的路径不是相对的,这是/rsrc/1370373631437/one-1/Test.png">https://sites.google.com/site/imagesizetesting//rsrc/1370373631437/one-1/Test.png。我不知道是否图像源是如何导致它或者是否是其他东西的差异。任何想法?这是我解析和下载图像的代码。

for image in soup.findAll("img"):
        print "Old Image Path: %(src)s" % image
        #Get file name
        filename = image["src"].split("/")[-1]
        #Get full path name if url has to be parsed
        parsedURL[2] = image["src"]
        image["src"] = '%s\%s' % (phonepath,filename)
        print 'New Path: %s' % image["src"]
        outpath = os.path.join(out, filename)

        #retrieve images
        if image["src"].lower().startswith("http"):
            urlretrieve(image["src"], outpath)
            print image["src"].lower()
        else:
            urlretrieve(urlparse.urlunparse(parsedURL), outpath) #Constructs URL from tuple (parsedURL)
            print image["src"].lower()

1 个答案:

答案 0 :(得分:0)

我明白了!这是我更新的代码,以防其他人遇到类似的问题。

for image in soup.findAll("img"):
        print "Old Image Path: %(src)s" % image
        #Get file name
        filename = image["src"].split("/")[-1]
        #Get full path name if url has to be parsed
        parsedURL[2] = image["src"]
        image["src"] = '%s\%s' % (phonepath,filename)
        #Old File path (local to computer)
        #image["src"] = '%s\%s' % (out,filename)
        print 'New Path: %s' % image["src"]
        #       print image
        outpath = os.path.join(out, filename)

        #retrieve images
        if parsedURL[2].lower().startswith("http"):
            #urlretrieve(image["src"], outpath)
            urlretrieve(parsedURL[2], outpath)
            print image["src"].lower()
        else:
            print "HTTP INFO " + urlparse.urlunparse(parsedURL)
            print "HTTP INFO " + image["src"].lower()
            urlretrieve(urlparse.urlunparse(parsedURL), outpath) #Constructs URL from tuple (parsedURL)
            #print image["src"].lower()