当前位置: 首页 > 知识库问答 >
问题:

如何使这个程序使用instagram pic网址和下载?[重复]

吕承望
2023-03-14

该程序的目标是获取用户给定的instagram url,并允许下载和保存图片。我已经把主要部分准备好了,但我不明白如何进一步使用经过过滤的正确url下载图片并将其保存到我的计算机上。

到目前为止我的代码:编辑:我添加了一个下载行,但似乎无法获得正确的文件类型?我的意思是它保存为我想要的,但我无法打开它:

import requests
import re
import shutil

def get_response(url):
    r = requests.get(url)
    while r.status_code != 200:
        r.raw.decode_content = True
        r = requests.get(url, stream = True)
    return r.text

def prepare_urls(matches):
    return list({match.replace("\\u0026", "&") for match in matches})

url = input('Enter Instagram URL: ')
response = get_response(url)

vid_matches = re.findall('"video_url":"([^"]+)"', response)
pic_matches = re.findall('"display_url":"([^"]+)"', response)

vid_urls = prepare_urls(vid_matches)
pic_urls = prepare_urls(pic_matches)

if vid_urls:
    print('Detected Videos:\n{0}'.format('\n'.join(vid_urls)))
    print("Can't download video, the provided URL must be of a picture.")
    
if pic_urls:
    print('Detected Pictures:\n{0}'.format('\n'.join(pic_urls)))
        from urllib.request import urlretrieve
        dst = 'Instagram picture.jpg'
        urlretrieve(url, dst)
#EDIT ^

if not (vid_urls or pic_urls):
    print('Could not recognize the media in the provided URL.')
    



共有1个答案

璩俊雅
2023-03-14

我想这可能会有帮助...

import requests
from bs4 import BeautifulSoup as bs
import json
import os.path

insta_url = 'https://www.instagram.com'
inta_username = input('enter username of instagram : ')

response = requests.get(f"{insta_url}/{inta_username}/")

if response.ok:
    html = response.text
    bs_html = bs(html, features="lxml")
    bs_html = bs_html.text
    index = bs_html.find('profile_pic_url_hd')+21
    remaining_text = bs_html[index:]
    remaining_text_index = remaining_text.find('requested_by_viewer')-3
    string_url = remaining_text[:remaining_text_index].replace("\\u0026", "&")

    print(string_url, "\ndownloading...")

while True:
    filename = 'pic_ins.jpg'
    file_exists = os.path.isfile(filename)

    if not file_exists:
        with open(filename, 'wb+') as handle:
            response = requests.get(string_url, stream=True)
            if not response.ok:
                print(response)
            for block in response.iter_content(1024):
                if not block:
                    break
                handle.write(block)
    else:
        continue
    break
print("completed")

您可以通过更改filename变量来更改下载图像的名称

 类似资料:
  • 我举一个url为例: 您可以在浏览器中看到它。 现在我想下载它。我试过: 失败,获取“错误”图片。 失败,获取“错误”图片。 失败了,得到了一张静态照片,我是说,只有一帧。 那么我该怎么做呢?

  • 问题内容: 我正在尝试从Google驱动器下载文件,我所拥有的只是驱动器的URL。 我已经阅读了有关API和的google API ,其中还需要一些凭据(主要是JSON )。但是我不知道它是如何工作的。 另外,尝试过,但我的情况是从驱动器中获取文件。也尝试过,但没有用。 尝试过的图书馆。它具有良好的驱动上传功能,但没有下载选项。 任何帮助将不胜感激。谢谢。 问题答案: 如果用“驱动器的网址”表示G

  • 我写的剧本的最终目标是从rally下载所有附件。我能够成功地连接到服务器,请求工作区中的所有附件,最后,通过迭代检索每个附件的内容。这将生成“AttachmentContent”的动态对象。对于任何API来说都是新的#和。NET,我现在被卡住了。我无法找到一种方法来访问此对象的内容并将其下载到我的计算机上的文件中。我在下面评论的这句话是我当前遇到错误并被卡住的地方。任何帮助都将不胜感激。提前谢谢!

  • 问题内容: 我正在尝试使用来下载项目的文件,因为该项目的SVN服务器不再运行,并且只能通过浏览器访问文件。所有文件的基本URL都一样 http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/ * 如何使用(或任何其他类似工具)下载此存储库中的所有文件,其中“ tzivi”文件夹是根文件夹,并且在其下有几个文件和子文件夹

  • 我在一个DB中有两个表(和),它们每个都有一个称为的相互列。 我当前使用以下代码仅从中导入一些数据(,): 如果我也想从导入数据(例如,名为和的列),那么我应该向该代码添加什么? 我的目标是拥有这些钥匙: 编辑: 编辑2: 仍然得到一个错误: