#python #multithreading #selenium #web-scraping #threadpool
Вопрос:
Я создал 3 разных скребка с 3 разных веб-сайтов, чтобы автоматизировать поиск конкретных функций разных компаний. Я использовал следующий код для параллельного выполнения через пул потоков
for idx,row in df.iterrows():
try:
company_name = row.project_name
if idx % 50 == 0:
# ms.exit()
ms = moneyhouseScraper()
dnb = dnbScraper()
f = facebookScraper()
with ThreadPoolExecutor() as executor:
moneyhouse_res = executor.submit(ms.get_info, company_name)
time.sleep(7)
dnb_res = executor.submit(dnb.get_annual_revenue, company_name)
time.sleep(7)
f_res = executor.submit(f.get_facebook_info, company_name)
res = moneyhouse_res.result()
get_data_info(idx,df,res)
df.loc[idx,'annual_revenue'] = dnb_res.result()
res_fb = f_res.result()
get_data_info(idx, df, res_fb)
except Exception as e:
print('Exception: ',e)
pass
if idx == 4 :
break
Обратите внимание, что каждый из скребков отлично работает по отдельности, а выводом является список функций. Вывод общего кода, однако, является
MoneyHouse: веб-драйвер.удаленный.вебэлемент.Веб-элемент (сеанс=»9ec6152d4aaab716ee832d5080848a04″, элемент=»bfaae532-e2d7-4837-ac89-06126d815935″)> url ><a rel=»noreferrer noopener nofollow» href=»https://www.facebook.com/JDHDirecte/?__tn__=https://www.facebook.com/JDHDirecte/?__tn__=<
Исключение: объект «WebElement» не имеет атрибута «заменить»
Каждый из последующих скребков (Facebook и DnB) может войти на страницу компании, которую я хочу очистить, но очистка не происходит, и в конечный результат не добавляются столбцы.