python 使用wget从Instagram下载图像

wlwcrazw  于 2023-02-03  发布在  Python
关注(0)|答案(1)|浏览(174)

我尝试从Instagram下载图片,代码是:

keywords =['cat','dog']
hashtags = ['cute_cat','cute_dog']

for keyword,tag in zip (keywords,hashtags):
    
    driver.get("https://www.instagram.com/explore/tags/" + tag + "/")

    n_scrolls = 10
    time.sleep(5)

    for j in range(0, n_scrolls):
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        images = driver.find_elements_by_tag_name('img')
        images = [image.get_attribute('src') for image in images]
        images = images[:-3] 

       
        path=os.getcwd()
        path=os.path.join(path)

        for image in images:
            save_as = os.path.join( keyword + '.jpg')
            wget.download(image, save_as)

问题是wget没有正常工作,或者我做错了什么,但是我想不出来,
ValueError:没有足够的值来解包(应为2,得到1)
我已经在(image,save_as)中定义了url和目标值,但是它一直给我这个错误。有人能帮帮我吗?
完整的错误消息
值错误跟踪(最近的调用最后调用)

21 for image in images:
 22     save_as = os.path.join( keyword + '.jpg')
  • --〉23 www.example.com(图像,另存为)wget.download(image, save_as)
524 else:
525     binurl = url
  • -〉526(临时文件,头)= ulib.urlretrieve(二进制URL,临时文件,回调)527文件名=检测文件名(URL,输出,头)528如果输出目录:
224 """
225 Retrieve a URL into a temporary location on disk.
226 

237 data file as well as the resulting HTTPMessage object.
238 """
239 url_type, path = _splittype(url)
  • -〉241,其中contextlib. closing(urlopen(url,data))作为fp:242 headers = www.example.com()244 #只返回本地路径和file://的"头文件"fp.info() 244 # Just return the local path and the "headers" for file://
  • 〉1656 mediatype,data = data. split(",",1)1658 #甚至base64编码的数据URL在任何情况下都可能被引用,因此取消引用:1659数据=取消引用到字节(数据)
    ValueError:没有足够的值来解包(应为2,得到1),这是完整消息
2izufjch

2izufjch1#

我在Instagram上隔离了一个URL,并运行了您的代码:

import os
import wget

image_url = "https://scontent-lcy1-2.cdninstagram.com/v/t51.2885-15/328075461_1175323806446003_923403735361226857_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lcy1-2.cdninstagram.com&_nc_cat=111&_nc_ohc=O2DMK-Da8K8AX--kBZ0&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzAyODczNTQ0NjIwNTAzNjIzMQ%3D%3D.2-ccb7-5&oh=00_AfCp4UuaO7KC2RlR1W-qdqgYh-7QyXaqlPMlGPgeYy_bMQ&oe=63E02A10&_nc_sid=4cb768"
keyword = "test_keyword"

       
path=os.getcwd()
path=os.path.join(path)

save_as = os.path.join( keyword + '.jpg')
wget.download(image_url, save_as)

这成功地从Instagram下载了一张图片。
我建议你调试你的代码,解析网页,检查它生成的网址的格式,我怀疑你从网页检索的网址是不正确的格式-你可能是挑选了错误的节点,以获得图像网址。
如果没有明显的错误,那么另外尝试获取由您的代码生成的url(将其输出到标准输出),并尝试直接在文件系统上使用wget本地运行它-我怀疑它会给予您同样的错误,并允许您进一步调试它。

相关问题