У меня есть около 100 влияющих, чтобы получить там имена пользователей последователей, там число подписчиков может варьироваться от 100 до 10 миллионов. Поэтому я хочу, чтобы код запускал все 100 влияющих одновременно, используя разные учетные записи и прокси-серверы (я знаю, что каждый IP-адрес может использовать одну и ту же учетную запись 5 раз в сеансе за один раз в instgram, верно?), Поэтому я могу использовать 20 разных аккаунтов с 20 разными IP). Весь этот процесс будет выполняться на том же сервере, поэтому я могу использовать многопоточность в python. Это будет работать ? или есть какие-то ограничения или другие способы сделать это?
Я использую instagram-scraper https://github.com/realsirjoe/instagram-scraper
Обновление: я пытался реализовать код, вот что я got: Код генерирует python скрипт для каждого влияющего и выполняет их одновременно
import subprocess
import time
import os
import multiprocessing
tasks=[]
followers_num = 100
with open('Influncers_data.csv')as f:
influncer_data = f.read().splitlines()
with open('profile.csv')as f:
profile = f.read().splitlines()
with open('proxy.csv')as f:
proxies = f.read().splitlines()
# for each item in the list of items
for x,y,z in zip(proxies,influncer_data,profile):
# construct the filename; prefix or suffix optional
file = 'get-followers-' + y + '.py'
# open the file to be written
fo = open(file, 'w')
# write the content in the file including the value being passed to each; %s indicates a string
#fo.write('%s' % value)
fo.write("from context import Instagram\n")
fo.write("from time import sleep\n")
fo.write("import csv\n")
fo.write('print("')
fo.write(y)
fo.write(' process is running")\n')
fo.write("instagram = Instagram()\n")
fo.write("instagram.set_proxies('")
fo.write('%s' %x)
fo.write("')\n")
fo.write("instagram.with_credentials('")
fo.write('%s' % z)
fo.write("', '4861530123')\n")
fo.write("instagram.login(force=False,two_step_verificator=True)\n")
fo.write("sleep(2) # Delay to mimic user\n")
fo.write("username = '")
fo.write('%s' % y)
fo.write("'\n")
fo.write("followers = []\n")
fo.write("account = instagram.get_account(username)\n")
fo.write("sleep(1)\n")
fo.write("followers = instagram.get_followers(account.identifier, ")
fo.write('%s' % followers_num)
fo.write(", 100, delayed=True) # Get 150 followers of 'kevin', 100 a time with random delay between requests\n")
fo.write("with open('")
fo.write('%s' % y)
fo.write(".csv', 'w', encoding='utf8') as f:\n")
fo.write(" f.write('Number'+','+'ID' +','+'Username'+','+'Profile picture URL'+','+'Number of published posts'+','+'Number of followers'+','+'Number of following'+','+'Is private'+','+'Is verified'+'\\n')\n ")
fo.write("for num,follower in enumerate(followers['accounts']):\n")
fo.write(" #print(follower)\n")
fo.write(" account = instagram.get_account(follower.username)\n")
fo.write(" sleep(10)\n")
fo.write(" f.write(str(num+1) +','+str(account.identifier)+','+follower.username+','+str(account.get_profile_picture_url())+','+str(account.media_count)+','+str(account.followed_by_count)+','+str(account.follows_count)+','+str(account.is_private) +','+str(account.is_verified)+'\\n')\n ")
fo.write('print("')
fo.write(y)
fo.write(' is completed")')
#close the file
fo.close()
for q in influncer_data:
tasks.append('get-followers-' + q + '.py')
# print(tasks)
def foo(task):
os.system('python3 ' + task)
if __name__ == '__main__':
for task in tasks:
p = multiprocessing.Process(target=foo, args=(task,))
p.start()
time.sleep(45)