Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python将网站上使用regex找到的所有图像文件下载到我的计算机中的指定目录_Python_Regex_Image_Url_Download - Fatal编程技术网

用python将网站上使用regex找到的所有图像文件下载到我的计算机中的指定目录

用python将网站上使用regex找到的所有图像文件下载到我的计算机中的指定目录,python,regex,image,url,download,Python,Regex,Image,Url,Download,我这里有一个代码,通过查找文件扩展名,使用regex查找所有图像文件。现在,我要做的是将其保存到计算机上的指定路径,并保留其原始文件名。我当前的代码可以找到这些图像,因为我通过打印'source'进行了测试,但没有将其保存到指定的目录中。也许任何人都可以帮助我调整代码 提前谢谢 这是我的密码: import urllib,re,os _in = raw_input('< Press enter to download images from first page >') if no

我这里有一个代码,通过查找文件扩展名,使用regex查找所有图像文件。现在,我要做的是将其保存到计算机上的指定路径,并保留其原始文件名。我当前的代码可以找到这些图像,因为我通过打印'source'进行了测试,但没有将其保存到指定的目录中。也许任何人都可以帮助我调整代码

提前谢谢

这是我的密码:

import urllib,re,os

_in = raw_input('< Press enter to download images from first page >')
if not os.path.exists('FailImages'): # Directory that I want to save the image to
        os.mkdir('FailImages') # If no directory create it

source = urllib.urlopen('http://www.samplewebpage.com/index.html').read()

imgs = re.findall('\w+.jpg',source) # regex finds files with .jpg extension

这会让你走的。它不会处理是否是外部链接,但会抓取本地图像

可选

  • 从安装依赖项请求
  • 从命令行执行:
  • $sudo easy\u安装请求
  • 如果使用请求,请取消对3行的注释,并注释掉最后一行:

    import urllib2,re,os
    #import requests
    
    folder = "FailImages"
    
    if not os.path.exists(folder): # Directory that I want to save the image to
        os.mkdir(folder) # If no directory create it
    
    url = "http://www.google.ca"
    source = urllib2.urlopen(url).read()
    
    imgs = re.findall(r'(https?:/)?(/?[\w_\-&%?./]*?)\.(jpg|png|gif)',source, re.M) # regex finds files with .jpg extension
    
    
    for img in imgs:
        remote = url + img[1] + "." + img[2];
        filename = folder + "/" + img[1].split('/')[-1] + "." + img[2]
        print "Copying from " + remote + " to " + filename
        if not os.path.exists(filename):
            f = open(filename, 'wb')
            f.write(urllib2.urlopen(remote).read())
            #f.write(requests.get(remote).content)
            f.close()
    

    注意:工作得更好,并确保发送正确的标题,urllib可能在大部分时间都不起作用。

    我想你手头的任务比简单地将所有图像文件转储到一个文件夹要艰巨得多。只有在图像命名不一致的情况下,这种方法才能很好地工作。您最好的选择是捕获图像的相对路径(对于本地图像),并在本地重新创建文件夹结构;对于外部图像,您可能希望创建一个类似的结构,但它包含在
    www.externalimage.com
    这样的文件夹中。即使某些图像被覆盖,页面上的图像是否具有相同的文件名也无关紧要?(1.jpg将覆盖1.jpg)?是的,我只需要一个简单的代码,将从网站下载/保存图像到我的文件夹。代码不必是健壮的。谢谢你的代码。但我必须使用Python上的标准模块。这样就不用安装模块了,我几乎可以用了。我所做的是取消对f.close和f=open的注释,但留下了对f.write的注释,因为它给了我错误“requests not defined”。它获取并保存了带有原始文件名的图像,这是我想要的,但不包含任何字节,只是文件夹中的一个文件。有什么建议吗?提前感谢这是urlretrieve会遇到的问题-它没有传递正确的头。如果我的能力还没有耗尽,我会在f.write中使用url retrieve来编辑它。如果它重新打开,我会更新。如果可以的话,你可以自己尝试一下,用f.write()包装url检索。我现在已经开始工作了。它只下载部分大小的文件,就像其中一个图像一样,它只下载246字节而不是43KB。你认为我应该怎么做?明白了--修复它以使用urllib2(为什么我一开始没有使用它?)
    import urllib2,re,os
    #import requests
    
    folder = "FailImages"
    
    if not os.path.exists(folder): # Directory that I want to save the image to
        os.mkdir(folder) # If no directory create it
    
    url = "http://www.google.ca"
    source = urllib2.urlopen(url).read()
    
    imgs = re.findall(r'(https?:/)?(/?[\w_\-&%?./]*?)\.(jpg|png|gif)',source, re.M) # regex finds files with .jpg extension
    
    
    for img in imgs:
        remote = url + img[1] + "." + img[2];
        filename = folder + "/" + img[1].split('/')[-1] + "." + img[2]
        print "Copying from " + remote + " to " + filename
        if not os.path.exists(filename):
            f = open(filename, 'wb')
            f.write(urllib2.urlopen(remote).read())
            #f.write(requests.get(remote).content)
            f.close()