CoderCastrov logo
CoderCastrov
Питон

Как парсить высоко защищенный веб-сайт с помощью инструмента Robotic Process Automation

Как парсить высоко защищенный веб-сайт с помощью инструмента Robotic Process Automation
просмотров
3 мин чтение
#Питон
Table Of Content

    Привет всем, я собираюсь объяснить, как парсить веб-сайт с помощью pywinauto, который является инструментом RPA (Robotic Process Automation). Когда я пытался спарсить веб-сайт для своего проекта, сначала я начал с фреймворка scrapy, чтобы спарсить этот веб-сайт, но они заблокировали меня, даже если я использовал несколько техник, но они каким-то образом смогли заблокировать scrapy. Затем я использовал selenium, который является известным инструментом для тестирования веб-приложений. Но веб-сайт снова заблокировал инструмент selenium, и, удивительным образом, ни одна страница не загрузилась. Большинство веб-сайтов блокируют фреймворки парсинга, используя пороговое значение количества запросов на определенный IP-адрес. Если IP-адрес превышает пороговое значение запросов, сервер блокирует этот IP-адрес на час или день. Поэтому большую часть времени мы замедляем скорость запросов или используем прокси-сервер, чтобы скрыть наш IP-адрес и переключать прокси для парсинга веб-сайта без ущерба для скорости парсинга. Если они блокируют scrapy по IP-адресу, то безопасность сервера требует некоторого времени для блокировки, поэтому он позволяет scrapy парсить веб-сайт до тех пор, пока не будет превышено пороговое значение количества запросов. Но на этом веб-сайте даже не загружается ни одна страница. Затем я скачал браузер selenium chrome и начал загружать веб-сайт вручную. Опять же, веб-сайт его заблокировал. Тогда я понял, что они каким-то образом находят фреймворк scrapy или инструмент selenium. Затем я прочитал несколько блогов и узнал, что программное обеспечение безопасности веб-сайта получает все инструменты парсинга с открытым исходным кодом и анализирует процесс запросов парсинга и обычные запросы. Таким образом, если инструмент парсинга делает запрос на веб-сайт, бот безопасности находит разницу между обычным запросом и запросом инструмента парсинга. Но я не уверен в этом. Затем я узнал о инструменте роботизированного процесса.

    Что такое Robotic Process Automation?

    Robotic Process Automation (RPA) позволяет организациям автоматизировать задачи, подобно тому, как это делает человек, взаимодействуя с существующей IT-архитектурой без необходимости сложной интеграции систем.

    В моем проекте я хочу спарсить данные о CEO по заданному списку названий компаний. Чтобы использовать RPA, это должен быть повторяющийся процесс.

    Сначала я хочу искать название компании, затем я хочу нажать на первую ссылку в списке результатов поиска, затем сохранить и так далее. Этот процесс закодирован на Python с использованием pywinauto, который является библиотекой для RPA, и нам также нужно указать библиотеке pywinauto, куда нажать, поэтому вам нужно получить координаты мыши с помощью любого программного обеспечения, которое покажет экранные координаты x и y. После завершения процесса RPA используйте инструмент scrapy для парсинга конкретных данных из локально сохраненного файла веб-страницы.

    import pywinauto.keyboard
    import pywinauto
    import pywinauto.mouse
    import win32api
    import time
    from pywinauto import Desktop, Application
    import pymongo
    import glob
    import os# путь к Chrome
    chrome_dir = r'"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"'# инициализация mongoclient
    client = pymongo.MongoClient('localhost',27017)db = client['ausceo']new = client['ausceonew']chrome = Application(backend='uia')#--инкогнитоchrome.start(chrome_dir + ' --force-renderer-accessibility  --start-maximized ''https://domain.com')path  =  'D:\\Download\\'html_files = [f for f in os.listdir(path) if f.endswith('.html')]html_files = [d[:4] for d in html_files]cursor = db['ausceo'].find(no_cursor_timeout=True)i = 0for data in cursor: print(data["company_name"]) if data['company_name'][:4] in html_files:   pass else:   time.sleep(15) pywinauto.mouse.click(button='left',coords=(830,129)) #830 129 search click time.sleep(5) company_name = data["company_name"].replace(' ',r"{VK_SPACE}") pywinauto.keyboard.SendKeys(company_name) time.sleep(7) #811 160    click pywinauto.mouse.click(button='left',coords=(811,160)) #1150 50 time.sleep(11) pywinauto.mouse.click(button='left',coords=(1150,50)) i=i+1 print('--------------',i,'----------------------------')
    cursor.close()

    Одним из недостатков pywinauto является то, что мы не можем использовать систему, пока этот процесс выполняется. Если вы помешаете системе или мыши, мышь может щелкнуть по другой ссылке, поэтому вам придется начать процесс сначала.

    Еще один совет: в selenium мы можем использовать расширение, например, Hotspot Shield, если ваш IP-адрес заблокирован надолго. В Hotspot Shield вы можете отключить файлы cookie и другие внедрения JavaScript, чтобы веб-сайт не мог определить, что это бот. Некоторые веб-сайты используют файлы cookie и внедрение JavaScript, чтобы определить Chrome и проверить, является ли это человеком или ботом selenium.

    RPA + машинное обучение могут выполнять любую задачу, которую выполняет человек и которая повторяется, и для обработки некоторой случайности в процессе мы можем использовать машинное обучение. Если кто-то знает библиотеку с открытым исходным кодом для RPA + машинного обучения, пожалуйста, оставьте комментарий.

    Ссылка на GitHub: https://github.com/vigneshgig/pywinauto.git