RecursionError: maximum recursion depth exceeded while pickling an object. Многопоточный парсинг
Посидел я около 5 часов пытаясь решить все сам, но никак. Я видел что вопросы на эту ошибку уже есть, но как-то я ничего не нашел полезного. Вот вообщем код:
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
import lxml.html
from lxml import etree
from bs4 import BeautifulSoup
from pathlib import Path
from loguru import logger
import time
import re
import csv
import random
import multiprocessing
from functools import partial
from browser import Browser
pool = multiprocessing.Pool(3)
class Parser(Browser):
""" Этот класс представляет парсер """
def __init__(self, link):
self.link = link
self.browser = self.get_browser()
self.start_parsing()
def convert_to_bs(self):
""" Получить объект BeautifulSoup """
page = self.browser.page_source
page = BeautifulSoup(page, 'lxml')
return page
def start_parsing(self):
""" Процесс парсинга """
self.launch_browser(self.link)
self.parse_responses()
def parse_responses(self):
""" Парсинг вопросов """
global get_content
def get_content(answer):
""" Достаем содержимое ответа """
content = answer.find('div', {'class': 'answercell'}) \
.find('div', {'class': 'js-post-body'}).text
return content
def get_all_answers():
""" Получаем все ответы с вопроса """
page = self.convert_to_bs()
all_answers = page.find('div', {'id': 'answers'}) \
.find_all('div', {'class': 'answer'})
return all_answers
# НИЖЕ ВЫЗОВ ФУНКЦИЙ
all_answers = get_all_answers()
print(list(pool.map(get_content, all_answers)))
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
from fake_useragent import UserAgent
from pathlib import Path
class Browser:
""" Класс представляющий браузер """
def get_browser(self):
""" Настроить и получить браузер """
user_agent = UserAgent()
user_agent = user_agent.random
driver = ChromeDriverManager().install()
options = webdriver.ChromeOptions()
options.add_argument(f'--user-agent={user_agent}')
options.add_argument(f'--disable-blink-features=AutomationControlled')
#options.add_argument('--headless')
browser = webdriver.Chrome(
driver,
options=options
)
return browser
def launch_browser(self, url, time=5):
""" Запустить браузер """
self.browser.get(url)
self.browser.maximize_window()
self.browser.implicitly_wait(time)
def close_browser(self):
""" Закрыть браузер """
self.browser.quit()
Буду благодарен любой помощи.