Я пытаюсь найти URL-адреса, которые я не могу найти из списка URL-адресов.Код ниже:
def sanity(url,errors):
global count
count+=1
if count%1000==0:
print(count)
try:
if 'media' in url[:10]:
url = "http://edoola.s3.amazonaws.com" + url
headers={'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36",
}
req=urllib.request.Request(url,headers=headers)
ret = urllib.request.urlopen(req)
return 1
except:
print(e, url)
errors.append(url)
return 0
limit=1000
count=0
errors = []
with open('file.csv','r',encoding="utf-8") as file:
text = file.read()
text = str(text)
urls = re.findall(r'<img.*?src=""(.*?)""[\s>]', text, flags=re.DOTALL)
arr = list(range(0,len(urls)+1,limit))
start=0
for i in arr:
threads = [threading.Thread(target=sanity, args=(url, errors,)) for url in urls[start:i]]
[thread.start() for thread in threads]
[thread.join() for thread in threads]
if i==0:
start=0
else:
start=i+1
print(errors)
with open('errors_urls.txt','w') as file:
file.write('\n'.join(errors))
Код работает для 1000 должным образом, но в следующих тысячах распечаток URL, которые доступны из моего браузера Chrome.Я изучил это и другие .Я попробовал эти подходы в терминале ipython, выбрав определенный URL, и он работал нормально.Но когда я ставлю такой же подход в приведенном выше коде.Я получаю доступные URL.Как мне решить эту проблему?
Количество URL составляет около 15000 ок.Итак, в приведенном выше коде я работаю по 1000 штук, соответственно порождая 1000 потоков.
Любая помощь приветствуется !!