【问题标题】:Requests in python sometimes works and sometimes notpython中的请求有时有效,有时无效
【发布时间】:2022-02-06 03:57:14
【问题描述】:

我正在尝试使用 python 创建一个 Instagram 帖子下载机器人:

import requests
import re

#get url's detail
def get_response(url):
    r = requests.get(url)
    while r.status_code != 200:
        r = requests.get(url)
    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)

#check if there is video url or picture url in the json webpage that is opened
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)))

if pic_urls:
    print('Detected Pictures:\n{0}'.format('\n'.join(pic_urls)))

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

完成代码后,我通过视频链接进行了尝试,并且成功了。 1 小时后,我尝试了相同的视频链接,但它打印出第三个条件:“无法识别提供的 URL 中的媒体。”。 我很困惑 。如您所见,我从未在代码中使用过我的登录凭据,但第一次有效,第二次无效...
有什么想法吗?

【问题讨论】:

  • 您的 get_response() 函数存在严重缺陷。如果 status_code 不是 200,您的代码将无限循环,希望服务器会改变主意。那只是一厢情愿。一些状态代码值得重试,但它们只是少数可能的响应

标签: python instagram


【解决方案1】:

使每个 URL 都以字符串 "?__a=1" 结尾(当我有空闲时间时,我将编辑这篇文章并添加确切的命令以将字符串附加到 URL 的末尾。)

例如,而不是: https://www.instagram.com/p/CECsuu2BgXj/

应该是: https://www.instagram.com/p/CECsuu2BgXj/?__a=1

输出:

Detected Videos:
https://instagram.fdet1-2.fna.fbcdn.net/v/t50.2886-16/117817389_1889475617843249_1329686959743847420_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jbGlwcy5kZWZhdWx0IiwicWVfZ3JvdXBzIjoiW1wiaWdfd2ViX2RlbGl2ZXJ5X3Z0c19vdGZcIl0ifQ&_nc_ht=instagram.fdet1-2.fna.fbcdn.net&_nc_cat=105&_nc_ohc=OZRYx-3yUoAAX-b1xzZ&edm=AABBvjUBAAAA&vs=17858436890092651_3299599943&_nc_vs=HBksFQAYJEdDM0FCUWN4YUFQVGQ3WUdBUHhMQUxJXy0zTVNicV9FQUFBRhUAAsgBABUAGCRHQ0hOQ2dkbFlrcEYwOWtDQUtHQ0RqWUV4cGdzYnFfRUFBQUYVAgLIAQAoABgAGwAVAAAm1onK7OqJuT8VAigCQzMsF0AkmZmZmZmaGBJkYXNoX2Jhc2VsaW5lXzFfdjERAHX%2BBwA%3D&ccb=7-4&oe=6200F187&oh=00_AT-WTSxaoeTOd_GO0gMtqSqkgRXtxibffFG5pJGyCOPTNQ&_nc_sid=83d603
Detected Pictures:
https://instagram.fdet1-1.fna.fbcdn.net/v/t51.2885-15/e35/117915347_192544875567579_944852773653606759_n.jpg?_nc_ht=instagram.fdet1-1.fna.fbcdn.net&_nc_cat=103&_nc_ohc=0Bdvog7HWe8AX-3vsql&edm=AABBvjUBAAAA&ccb=7-4&oh=00_AT_O33BzV3tCKaDp_9eqeBUiYgyzVguImltLTuPIPKP4hg&oe=6201035F&_nc_sid=83d603

欲了解更多信息,请查看this awesome post

【讨论】:

  • 谢谢,但这不适用于instagram.com/p/CZllGtULjuz
  • 啊,我明白了。我检查了我的浏览器,确实我经常得到一个登录页面。看起来这发生在服务器端。恐怕以访客身份进行身份验证是不可靠的,即使登录,Instagram can ban your IP address 如果发送的请求太多。抱歉,我无法提供更多帮助,但 Instagram is cracking down hard. 您可以考虑参考书目,尽管 Instagram 不断被禁止,它仍然可以正常工作。
猜你喜欢
  • 2021-11-18
  • 2014-09-18
  • 2023-03-19
  • 1970-01-01
  • 2017-01-14
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
相关资源
最近更新 更多