Вызов представления django внутри функции скрапера playwright
a. У меня есть функция скрепера, показанная ниже, где мне нужен ввод капчи, чтобы продвинуться дальше в скрепировании.
b. Мне нужно, чтобы поток происходил следующим образом:
- Я нажимаю кнопку внутри представления Django, чтобы начать скраппинг на веб-странице.
- Скрепер начинает работать и достигает страницы на сайте MCA с капчей.
- Playwright делает скриншот капчи в виде изображения и отправляет его в представление Django для отображения в виде изображения на странице, пока Playwright ожидает ввода от пользователя в представлении Django.
- Представление Django загружает капчу на страницу с формой, требующей ввода капчи пользователем. Как только пользователь вводит капчу в форму внутри представления Django и отправляет ее, пользовательский ввод передается в Playwright, который затем вводит капчу на страницу и продолжает скраппинг сайта MCA.
.- Данные, собранные 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.")```