如何避免Instagram API错误“ 429请求过多”

时间:2019-12-11 19:58:54

标签: python python-requests instagram instagram-api instagram-graph-api

我有一个很难解决的问题: 我有一个Instagram用户列表,我需要从每个帐户中提取“关注”列表。 为了简化请求,(使用Python)我使用了一个名为“ igramscraper”的模块。 我以这种方式构造脚本: 我创建了两个函数(一个用于提取关注者,另一个用于将其放入数据库) 我创建了一个循环访问用户名的for循环,并为循环中的每个用户调用了两个函数。 我把time.sleep时间放在用户的迭代之中。 在提取跟踪者的代码中,我首先需要检查该帐户是否仍然存在,然后需要发出请求以获取帐户是否为私有帐户,然后,如果account-is_private == False,则提取相关的跟踪者。 / p>

正如我所说,我在用户循环中睡眠了大约2分钟,即在帐户私有请求和帐户跟随请求之间以及最后一次尝试/除外之间的time.sleep,如果遇到429错误,请求太多,大约需要2个小时的时间。

问题在于,即使我等待2个小时,Instagram仍允许我执行前100/150个请求,然后每次尝试执行时都会拒绝我的请求。

有什么方法或建议可以避免此问题?代码如下:

import cv2
import sys

mouthCascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_smile.xml')
faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eyeCascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
video_capture = cv2.VideoCapture(0)

while True:
    # Capture frame-by-frame
    ret, frame = video_capture.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    mouth = mouthCascade.detectMultiScale(gray, 1.3, 5)
    faces = faceCascade.detectMultiScale(
                gray,
                scaleFactor=1.1,
                minNeighbors=5,
                minSize=(30, 30)
            )
            # Draw a rectangle around the faces
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
            # Draw a rectangle around the faces
        roi_gray_mouth = gray[y+(int(h/2)):y+h, x:x+w]
        roi_color_mouth = frame[y+(int(h/2)):y+h, x:x+w]

        roi_gray_eye = gray[y-(int(h/2)):y+h, x:x+w]
        roi_color_eye = frame[y-(int(h/2)):y+h, x:x+w]

        mouth = mouthCascade.detectMultiScale(roi_gray_mouth)
        eyes = eyeCascade.detectMultiScale(roi_gray_eye)
        for (ex,ey,ew,eh) in mouth:
            cv2.rectangle(roi_color_mouth, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)

        for (eex,eey,eew,eeh) in eyes:
            d = int(eew / 2)
            cv2.circle(roi_color_eye, (int(eex + eew / 4) + int(d / 2), int(eey + eeh / 4) + int(d / 2)), int(d) ,(0,0,255),2)

    # Display the resulting frame
    cv2.imshow('Video', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything is done, release the capture
video_capture.release()
cv2.destroyAllWindows()

0 个答案:

没有答案