Интеграция SeleniumBase в Django
Недавно я наткнулся на способ сделать selenium быстрее, используя SeleniumBase. Я работаю над сайтом, который должен анализировать страницу покупок google. Он использует selenium для пробуждения страницы, потому что на странице есть javascript, и он использует BeautifulSoup для разбора содержимого страницы... и это медленно. Я уже несколько дней пытаюсь интегрировать Django и SeleniumBase, но безуспешно. Представления Django в сочетании со структурой классов Selenium Base ограничивают мои познания в сыром питоне. У меня есть функция в нижней части моего кода, которая анализирует содержимое страницы, включающее SeleniumBase и BeautifulSoup, а также вызов функции и forloop в верхней части для перебора содержимого. Я получил несколько сообщений об ошибках, и я все еще думаю, что я далек от решения, поэтому я не чувствую необходимости публиковать их здесь, потому что ни одно из них не кажется слишком значительным. Любая помощь будет высоко оценена.
P.S. Я немного новичок в django и python и действительно новичок в Selenium и SeleniumBase
def home(request):
form = SearchForm(request.POST or None)
if form.is_valid():
form.save()
if request.POST:
for google_post in google_initiate(request, self):
#Do some stuff
#Make a list
#Append stuff to list
Вызов функции в верхней части кода
def google_initiate(request, self):
self.open(
"https://www.google.com/"
"search?q=desk&source=lmns&tbm=shop&bih=1043&biw=1866&hl=en&sa="
"X&ved=2ahUKEwjxh5DYj9T5AhVEsHIEHfpsA_0Q_AUoAXoECAEQAQ")
soup = self.get_beautiful_soup()
parsed = soup.find_all(
'div', {'class': ['sh-dgr__gr-auto', 'sh-dgr__grid-result']}
)
print(parsed)
return parsed
Ниже представлена структура рабочего класса SeleniumBase...
class MyTestClass(BaseCase):
def test_parse_shopping(self):
self.open(
"https://www.google.com/"
"search?q=desk&source=lmns&tbm=shop&bih=1043&biw=1866&hl=en&sa="
"X&ved=2ahUKEwjxh5DYj9T5AhVEsHIEHfpsA_0Q_AUoAXoECAEQAQ")
soup = self.get_beautiful_soup()
parsed = soup.find_all(
'div', {'class': ['sh-dgr__gr-auto', 'sh-dgr__grid-result']}
)
print(len(parsed))
Думаю, это просто вопрос интеграции этого в мою функцию и, самое главное, возможность правильно вызвать ее.