Обработайте список URL с помощью Newspaper3k (python3 lib), используя многопоточность, которая никогда не заканчивается
Скрипт читает список URL, я передаю этот список в очередь, а затем обрабатываю их с помощью python-magazine3k. У меня много разных URL, многие из них не очень популярные сайты. Проблема в том, что обработка никогда не заканчивается. Иногда это доходило до конца, но есть некоторые процессы, которые решают проблему, которую нужно остановить. Проблема в том, что python-газета пытается разобрать каждый HTML. Код
Здесь я загружаю URL-адреса в очереди, а затем с помощью газеты загружаю и анализирую каждый HTML-код.
def grab_data_from_queue():
#while not q.empty(): # check that the queue isn't empty
while True:
if q.empty():
break
#print q.qsize()
try:
urlinit = q.get(timeout=10) # get the item from the queue
if urlinit is None:
print('urlinit is None')
q.task_done()
url = urlinit.split("\t")[0]
url = url.strip('/')
if ',' in url:
print(', in url')
q.task_done()
datecsv = urlinit.split("\t\t\t\t\t")[1]
url2 = url
time_started = time.time()
timelimit = 2
#page = requests.get(url)
#page.raise_for_status()
#print "Trying: " + str(url)
if len(url) > 30:
if photo == 'wp':
article = Article(url, browser_user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0')
else:
article = Article(url, browser_user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0', fetch_images=False)
imgUrl = ""
#response = get(url, timeout=10)
#article.set_html(response.content)
article.download()
article.parse()
print(str(q.qsize()) + " parse passed")
Тогда я делаю нить
for i in range(4): # aka number of threadtex
try:
t1 = Thread(target = grab_data_from_queue,) # target is the above function
t1.setDaemon(True)
t1.start() # start the thread
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
print(str(exc_tb.tb_lineno) + ' => ' + str(e))
q.join()
Есть ли способ узнать, с каким URL возникла проблема, и чтобы выйти долго? Если я не могу найти URL, возможно ли остановить демон потока?