Я попытался выполнить многопроцессорный процесс получения URL-адресов, поскольку в противном случае обработка 300 тыс. URL-адресов, которые я хочу обработать, заняла бы огромное количество времени. Каким-то образом мой код перестает работать через случайное время, и я не знаю, почему. Можете вы помочь мне? Я уже провел некоторое исследование по этому поводу, но не смог найти ничего, что мне очень помогло. Обычно я могу обработать около 20 тысяч ссылок, но затем он зависает без ошибки, просто нет дальнейшей обработки ссылок, и программа все еще работает. Может все процессы перегружены плохими ссылками? Любой способ понять это?
urls = list(datafull['SOURCEURL'])
#datafull['SOURCEURL'].apply(html_reader)
with futures.ThreadPoolExecutor(max_workers=50) as executor:
pages = executor.map(html_reader,urls)
Мой скрипт html_reader:
def html_reader(url):
try:
os.chdir('/Users/benni/PycharmProjects/Untitled Folder/HTML raw')
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
r = requests.get(url, headers=headers)
data = r.text
url = str(url).replace('/','').replace('http:','').replace('https:','')
name = 'htmlreader_'+url+'.html'
f = open(name,'a')
f.write(str(data))
f.close()
print(time.time(),' ',url)
return data
except Exception:
pass
Большое спасибо!