Ответы пользователя по тегу Парсинг
  • Как выйти из бесконечной работы браузера при парсинге через Selenium?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Нейронка это конечно хорошо, но желательно проверять, что она пишет:
    # EC.presence_of_element_located((By.CSS_SELECTOR, "product-slider__img js-product-current-img"))
    EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))

    Ниже код для Chrome и FF (Python 3.10, Windows 11 Pro 23H2) - все прекрасно работает, за исключением сайта-помойки, который грузится минуту:
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
    options = Options()
    service = Service(r'D:\project\chromedriver-130.0.6723.93.exe')
    driver = webdriver.Chrome(service=service, options=options)
    
    url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
    driver.get(url)
    
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
        )
        page_html = driver.page_source
        print(page_html)
    
    except TimeoutException:
        print("Элемент не найден")
    
    finally:
        print('Программа завершена')
        driver.quit()

    from selenium import webdriver
    from selenium.webdriver.firefox.service import Service
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
    options = Options()
    service = Service(r'D:\project\geckodriver.exe')
    driver = webdriver.Firefox(service=service, options=options)
    
    url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
    driver.get(url)
    
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
        )
        page_html = driver.page_source
        print(page_html)
    
    except TimeoutException:
        print("Элемент не найден")
    
    finally:
        print('Программа завершена')
        driver.quit()

    672b4890b03b0937030403.png
    Ответ написан
    2 комментария
  • Как достать данные из заголовка полученные в get запросе в виде json?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Преобразовать json, пример.
    2. Циклом обойти п1, производя манипуляции с элементами объекта.
    Ответ написан
  • Как правильно настроить Key Collector?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Keycollector перестал собирать частотность wordstat и парсить позиции из яши примерно с 22.03.2022. Фактически, сейчас keycollector представляет из себя программу по локальной работе с уже собранными данными, за прежнюю стоимость.

    Изменения в Key Collector, О программе (внимание на перечеркнутый текст), Key Collector работает сейчас или нет?
    Ответ написан
    Комментировать
  • CodeForces добавил защиту от парсинга?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    $ curl https://codeforces.com/
    <!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge">

    Первый ответ сервера (а bs4 в большее и не умеет), возвращает среди прочего < title>Just a moment... title>, уже как бы намекая, что там что то происходит... Защита может быть элементарной, но не видя Ваш код, говорить о решение не приходится.
    Ответ написан
    Комментировать
  • Как сохранить страницу незаметно?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Пришел к тому что буду вручную гулять по нужным страницам и собирать инфу, но опять же встал вопрос как сохранять код незаметно.

    Teampermonkey + save page. Пример с сохранением страницы после ее загрузки и по таймеру:
    // ==UserScript==
    // @name         Super script
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  Super script description
    // @author       Spamer
    // @match        *://*/*
    // @grant        none
    // ==/UserScript==
    
    (function() {
        function savePageAsHTML() {
            const htmlContent = document.documentElement.outerHTML;
            const blob = new Blob([htmlContent], {type: 'text/html'});
            const url = URL.createObjectURL(blob);
            const a = document.createElement('a');
            a.href = url;
            a.download = 'page.html';
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
            URL.revokeObjectURL(url);
        }
    
        // load
        window.addEventListener('load', () => {
            savePageAsHTML();
        });
    
        // load + timer
        window.addEventListener('load', () => {
            setTimeout(savePageAsHTML, 10000);
        });
    })();
    Ответ написан
  • Как защитить SPA от парсинга?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    API должен убедиться что запросы получает с сайта а не из других источников (curl,postman,php).

    Элементарно.
    Блокировать открытие сайта в эумляторов браузеров, например ломанный Selenium.

    Selenium это не эмулятор браузеров. "Ломанный" selenium это как?
    Остальные вопросы решает платная защита от Cloud Flare.

    Не решает, даже Яша и Гугл. Вопрос лишь в стоимости преодоления зашиты, в Вашем случае она находится в диапазоне "дешево-средне".

    Либо сделайте официальный api с ограничениями, либо используйте "теневой бан" для ботов и передавайте им информацию средней верности.
    Ответ написан
    3 комментария
  • Как вытащить динамически меняющийся XML документ?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Один из вариантов:
    - API, взаимодействие с MOEX ISS через Python.
    -Selenium.
    Ответ написан
    Комментировать
  • Может ли сервер обнаруживать использование MITM Proxy/Burp Suite?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    И возникает вопрос, а может ли сервер как то обнаруживать использование mitm proxy?

    https://proxy.incolumitas.com/proxy_detect.html
    Ответ написан
    Комментировать
  • Как сделать парсер для excel таблицы?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Подскажите, как написать такой парсер, чтобы разбить информацию по ячейкам.

    1. Запросить данные с сайта используя requests.
    2. Использовать beautifulsoup для парсинга html из п1.
    3. Использовать openpyxl для работы с excel.
    Ответ написан
    Комментировать
  • Как проверить из каких источников приходит ответ при запросе на сайте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Вопрос: как по запросу (после отправки) посмотреть из каких источников этот ответ приходит?

    В хроме можно посмотреть, куда ушёл запрос.
    Ответ написан
    Комментировать
  • Запуск selenium на VPS сервере выдает ошибку 127?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    Ответ написан
    Комментировать
  • Скрипт на Python работает медленно, как ускорить?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Скрипт в целом работает, но работает медленно, а мне нужно проверить порядка 300.000 страниц. Подскажите пожалуйста, есть ли способы как то ускорить работу кода?

    Ваш скрипт выполняет запросы к ПС последовательно, по одному за раз (синхронно), дожидаясь завершения предыдущего. Чтобы радикально увеличить производительность, необходимо выполнять операции параллельно (асинхронно). Используйте asyncio для выполнения асинхронного выполнения скрипта, и aiohttp вместо requests в качестве асинхронного http клиента.
    Ответ написан
  • Как на сегодняшний день интернет-магазины парсят товары?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Заказывают разработку индивидуальных парсеров? Заливают по API? Или какими-то другими еще способами загружают?

    Если можно готовым решением - используют его, если нет, то самопис. Это работает как для "поставщика", так и для конкурентов.
    Ответ написан
  • Выбор: парсить на питоне с aiohttp, asyncio, bs4 или requests + bs4?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Помогите разложить это по полочкам.

    Зависит от задачи:
    1. aiohttp + asyncio - выполнение асинхронных http запросов, без блокировки основного потока. Когда надо спарсить множество страниц без защиты, а времени в обрез.
    2. requests + bs - выполнение синхронных http запросов, с блокировкой основного потока. Когда надо спарсить несколько страниц без защиты, и время не жмет.
    3. selenium - когда первые 2 легли на первой же "защите на дурака". Синхронно, медленно, ресурсоёмко, максимальная человечность.
    Ответ написан
    6 комментариев
  • Как парсить сайты на Wordpress в определённой доменной зоне?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Это должно быть что-то вроде робота, которые будет переходить от сайта к сайту по внутреннем ссылкам

    Что это за сайты, которые ставят ссылки на своих конкурентов? Исключая ссылки на источник.
    или лучше сделать парсинг поисковой выдачи

    Поисковой. Затем по косвенным признакам определять, используется ли wp или не.
    (но как тогда сделать выдачу максимально разнообразной, ведь у меня нет конкретного поискового запроса?)?

    - Спарсить из вордстата.
    - Спарсить из поисковых подсказок.
    - Придумать.
    Ответ написан
    Комментировать
  • Как сопоставлять товары при парсинге?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    0. Тренируем нейронку распознавать товары, материалы по Вашей теме:
    0.1. https://habr.com/ru/companies/stm_labs/articles/708608/
    0.2. https://new-retail.ru/business/e_commerce/price_ru...
    0.3. Сравнение текстовых описаний через методы обработки естественного языка (NLP), такие как TF-IDF, word2vec, BERT для извлечения смысла и семантического сравнения текстов (Spacy, Hugging Face Transformers и другие библиотеки NLP для анализа текста).
    0.4. Анализ изображений товаров с помощью сверточных нейронных сетей (CNN), которые могут выявлять визуальные сходства между изображениями товаров, даже если они отличаются углом съемки, освещением или масштабом (OpenCV и TensorFlow).
    0.5. Графовые базы данных и алгоритмы, которые могут использоваться для идентификации связей между товарами на основе их атрибутов и отношений.
    1. Нейронка из п0. распознает товары.
    2. Человек в случайном порядке проверяет работу нейронки из п1. и при необходимости, сообщает ей её ошибки. Таким образом происходит дообучение нейронки уже в процессе работы.

    Либо, использовать поисковые движки (с его возможностями полнотекстового поиска и сопоставления), по типу Elasticsearch или OpenSearch (получая наибольшую вероятность сопоставления).
    Ответ написан
    5 комментариев
  • Парсер парсит только первые 5 URL картинок, а дальше /app/static/media/no_thumbnail.c222b0530.svg, что делать?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    requests парсит лишь первый ответ сервера и не может в динамический контент.
    что делать?

    Не использовать requests для парсинга, а использовать selenium.
    Ответ написан
  • При парсинге выдает ошибку 503. В чем может проблема?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    При парсинге выдает ошибку 503. В чем может проблема?

    В данном исполнение - никак. requests возвращает html, который сервер вернул при первом запросе, а сервер первым возвращает 503 ответ, затем js loader (загрузку), а уже затем необходимую страницу.
    КартинкО
    65fbd419a63e3055208155.png

    Буду рад, если распишите более подробно, как обходить данную ошибку.

    В данном случае - использовать selenium + undetected_chromedriver/selenium-stealth.
    Я сильно сомневаюсь, что этот сайт без антибот защиты

    MagicMight прав, а DmitriyKLN еще придется с этой защитой столкнуться.
    Ответ написан
    1 комментарий
  • Составить карту для парсинга и автоматизации ставок?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Планирую сделать парсер букмекерской конторы

    подскажите какие темы нужно поучить

    Selenium
    selenium-stealth (это букмекеры, Вы у них не первый, а значит броня прокачена).
    есть начальные знания питона, остановился на списках, кортежах и тп

    Это не начальные знания, начальные знания - это весь python (от корки до корки), с малым количеством написанного кода.
    Ответ написан
    3 комментария