簡體   English   中英

使用 wget 從 Instagram 下載圖片

[英]Downloading images from Instagram with wget

我正在嘗試從 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 和目標值,但它一直給我這個錯誤。 有人能幫助我嗎?

完整的錯誤信息

ValueError Traceback(最后一次調用)

 21 for image in images:
 22     save_as = os.path.join( keyword + '.jpg')

---> 23 wget.download(圖像,另存為)

524 else:
525     binurl = url

--> 526 (tmpfile, headers) = ulib.urlretrieve(binurl, tmpfile, callback) 527 filename = detect_filename(url, out, headers) 528 if outdir:

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 with contextlib.closing(urlopen(url, data)) as fp: 242 headers = fp.info() 244 # 只返回本地路徑和 file:// 的“headers”

-> 1656 mediatype, data = data.split(",",1) 1658 # 即使是 base64 編碼的數據 URL 也可能被引用,因此在任何情況下都不要引用:1659 data = unquote_to_bytes(data)

ValueError:沒有足夠的值來解壓(預期 2,得到 1),這是完整的消息

我在 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 的格式。 我懷疑您從頁面檢索的 url 格式不正確 - 您可能選擇了錯誤的節點來獲取圖像 url。

如果不是明顯不正確,那么另外嘗試使用代碼生成的 url(將其輸出到標准輸出),並嘗試直接在文件系統上直接使用 wget 本機運行它 - 我懷疑它會給你同樣的錯誤,並允許您進一步調試它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM