代码之家  ›  专栏  ›  技术社区  ›  Bonteq

抓取本地加载的图像

  •  0
  • Bonteq  · 技术社区  · 8 年前

    我正在学习Beautiful Soup,在试图抓取从本地目录上传的图像时遇到了一个问题。我看到的错误是:

    ValueError: unknown url type: 'images/ixa2.png'
    

    我假设图像是从本地目录加载的,而不是通过URL托管的。这是我检查试图刮取的元件时的样子:

    <img width="200" align="left" hspace="0" src="ixa/cards/axisofmortality.jpg">
    

    我很好奇是否有可能刮取这些图像,如果有,如何刮取。

    以下是我正在使用的代码:

    from urllib import request
    import urllib.request
    from bs4 import BeautifulSoup as soup
    
    def make_soup(url):
        result = request.urlopen(url)
        page = result.read()
    
        parsed_page = soup(page, "html.parser")
        result.close()
        return parsed_page
    
    def get_images(url):
        soup = make_soup(url)
        images = [img for img in soup.findAll('img')]
        print (str(len(images)) + "images found.")
        print('Downloading images to current working directory.')
        #compile our unicode list of image links
        image_links = [each.get('src') for each in images]
        for each in image_links:
            filename=each.split('/')[-1]
            urllib.request.urlretrieve(each, filename)
        return image_links
    
    get_images('http://mythicspoiler.com/')
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Roman Mindlin    8 年前

    您正在尝试从不完整的url下载图像。

    我的建议如下:

    def get_images(url):
        soup = make_soup(url)
        images = [img for img in soup.findAll('img')]
        print (str(len(images)) + "images found.")
        print('Downloading images to current working directory.')
        #compile our unicode list of image links
        image_links = [each.get('src') for each in images]
        for each in image_links:
            filename=each.split('/')[-1]
            urllib.request.urlretrieve('http://mythicspoiler.com/' + each, filename) # <---
        return image_links
    
    推荐文章