我尝试从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),这是完整消息
1条答案
按热度按时间2izufjch1#
我在Instagram上隔离了一个URL,并运行了您的代码:
这成功地从Instagram下载了一张图片。
我建议你调试你的代码,解析网页,检查它生成的网址的格式,我怀疑你从网页检索的网址是不正确的格式-你可能是挑选了错误的节点,以获得图像网址。
如果没有明显的错误,那么另外尝试获取由您的代码生成的url(将其输出到标准输出),并尝试直接在文件系统上使用wget本地运行它-我怀疑它会给予您同样的错误,并允许您进一步调试它。