【问题标题】:loop though jpgs one by one to download to computer一张一张循环播放jpeg下载到电脑
【发布时间】:2020-10-30 03:19:15
【问题描述】:

我正在尝试自学一些 python 并且我一直在看 youtube 视频 :)

我的一项任务是抓取一张图片并将其下载到我的工作文件夹中。我解决了它,但想更进一步。我创建了一个 jps 列表,并希望逐个迭代并下载它们。这是我到目前为止的代码:

base = 'https://keithgalli.github.io/web-scraping/'
test = [ linkz.find('img').get('src') for linkz in find_all].

urls = [urljoin(base, t) for t in test]
gets me this list  - ['https://keithgalli.github.io/web-scraping/images/italy/lake_como.jpg',
 'https://keithgalli.github.io/web-scraping/images/italy/pontevecchio.jpg',
 'https://keithgalli.github.io/web-scraping/images/italy/riomaggiore.jpg']

现在我像这样将它作为单个项目发送 -

sending = [urllib.request.urlretrieve( split , l) for split in urls][0]

l 来自以下:

myList =  [i.split('italy/', 1)[-1] for i in urls]
for l in myList:
    print(l)

lake_como.jpg
pontevecchio.jpg
riomaggiore.jpg

我希望能够通过一个一个发送每个链接并下载所有图片。同样出于某种原因,当我在 myList 中运行 l 时:如果我在另一行打印 l,则打印 (l) 仅显示“riomaggiore.jpg”而不显示其他 2 个 jpg??

【问题讨论】:

    标签: python-3.x string list web-scraping


    【解决方案1】:

    您可以简单地使用requests 库来执行此操作:

    import requests
    
    urls = ['https://keithgalli.github.io/web-scraping/images/italy/lake_como.jpg',
     'https://keithgalli.github.io/web-scraping/images/italy/pontevecchio.jpg',
     'https://keithgalli.github.io/web-scraping/images/italy/riomaggiore.jpg']
    
    for img_num,url in enumerate(urls):
        r = requests.get(url)
        with open(f'D:\\Img_{img_num+1}.jpg','wb') as f:
            f.write(r.content)
    

    输出图像:

    图片1:

    图 2:

    图 3:

    你也可以使用urllib.request.urlretrieve获得同样的结果:

    import urllib.request as req
    
    urls = ['https://keithgalli.github.io/web-scraping/images/italy/lake_como.jpg',
     'https://keithgalli.github.io/web-scraping/images/italy/pontevecchio.jpg',
     'https://keithgalli.github.io/web-scraping/images/italy/riomaggiore.jpg']
    
    [req.urlretrieve(url,f'D:\\Img_{img_num+1}.jpg') for img_num,url in enumerate(urls)]
    

    【讨论】:

    • 谢谢,效果很好!此外,我必须在整个文件路径中始终使用双反斜杠。
    • YW!如果我的 ans 对你有帮助,请点击我的 ans 附近的绿色刻度线,将我的 ans 视为最佳答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2022-08-23
    • 2014-03-19
    相关资源
    最近更新 更多