Вызов представления django внутри функции скрапера playwright

a. У меня есть функция скрепера, показанная ниже, где мне нужен ввод капчи, чтобы продвинуться дальше в скрепировании.

b. Мне нужно, чтобы поток происходил следующим образом:

  1. Я нажимаю кнопку внутри представления Django, чтобы начать скраппинг на веб-странице.
  2. Скрепер начинает работать и достигает страницы на сайте MCA с капчей.
  3. Playwright делает скриншот капчи в виде изображения и отправляет его в представление Django для отображения в виде изображения на странице, пока Playwright ожидает ввода от пользователя в представлении Django.
  4. Представление Django загружает капчу на страницу с формой, требующей ввода капчи пользователем. Как только пользователь вводит капчу в форму внутри представления Django и отправляет ее, пользовательский ввод передается в Playwright, который затем вводит капчу на страницу и продолжает скраппинг сайта MCA.
  5. .
  6. Данные, собранные Playwright, возвращаются в виде словаря и сохраняются в модели Django.

Мой вопрос в том, как мне реализовать 3. и 4. выше. Код скраппинга приведен ниже:

    """Get profile data from mca.gov.in for a given CIN or LLPIN"""
    try:
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=False)
            context = browser.new_context()
            page = context.new_page()
            page.goto(url="https://www.mca.gov.in/mcafoportal/viewCompanyMasterData.do")
            page.fill("#companyID", cin_or_llpin)
            page.wait_for_selector("#captcha")
            page.locator("#captcha").screenshot(path="mcaCaptcha.png")
            # Let the user enter captcha code
            captcha = input("What is the captcha?:")
            page.fill("#userEnteredCaptcha", captcha)
            page.click("#companyLLPMasterData_0")
            ........

            ........
            context.close()
            browser.close()

            return {
                "mca_entity_profile": entity_profile_data,
                "management_details": signatory_details,
            }

    except Exception as e:
        print(e)
        print("MCA website not available. Please try again after some time.")```
Вернуться на верх