Задать вопрос
Ответы пользователя по тегу Парсинг
  • Как сделать, чтобы при парсинге bs4 как то надо нажать на кнопку "показать еще", чтобы подгрузило еще 20 постов?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Как сделать, чтобы при парсинге bs4 как то надо нажать на кнопку

    Никак, bs4 как и requests лишь получают то, что отдал сервер при первом ответе. Вы можете попробовать исследовать то, какой запрос на сервер отправляется, при нажатие этой кнопки, а затем отправлять запросы из bs4 напрямую к этому серверу. А вообще, для таких задач (нажатие кнопок на сайте итп), используйте Selenium или CDP.
    так как я учусь пасингу в bs4

    А чего там учить?
    Ответ написан
    Комментировать
  • Как выполнить Olx парсинг номера?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    - Selenium не нужен, он легко определяется и слишком много жрет. Используйте Zendriver.
    - Используйте реалистичный отпечаток браузера.
    - Используйте мобильные прокси.
    - Используйте реалистичное движение курсором мыши или сенсорные действия (для смартфонов).
    - Нужна асинхронность? - запускайте Zendriver асинхронно, используя Asyncio.

    Обнаружат ли вас? Простая-средняя защита - нет, сложная да.
    Ответ написан
    Комментировать
  • Как парсить динамические сайты на python?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Либо анализ http запросов и попытка обращения напрямую к ним -
    dynamic web page scraping with python, средняя сложность, максимальная производительность, легко вычисляется.
    - Либо Chrome DevTools Protocol (zendriver) - высокая сложность, средняя производительность, тяжело вычисляется.
    - Либо Selenium, простая сложность, минимальная производительность, легко вычисляется.
    Ответ написан
    Комментировать
  • Способ обхода CloudFlare 2025?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    Я попробовал много способов, но все они не помогают мне обойти защиту

    Какие пробовали?
    Язык не важен

    Не важен, но скорее всего это будет Python.
    важен алгоритм. Как мне это сделать

    1. Python + Zendriver + no headless.
    2. Открываем отдельный профиль браузера.
    3. Заходим на сайт с cloudlfare, ждем загрузки окна капчи, жмем на него, сохраняем куку и попадаем на сайт.

    Последующий заход так же выполняем через профиль браузера из п2, cloudflare будет доволен, временно. Ну и про правильный отпечаток браузера + правильный ip я думаю смысла говорить нет.
    Язык не важен, важен алгоритм. Как мне это сделать? Не предлагайте сторонние API для решения капчи.

    Если с headless и без привязки к Python, то статьи по теме:
    - Об одном способе веб-скрапинга сайтов, защищенных ....
    - Парсим сайты с защитой от ботов.
    - Chrome Headless против cloudflare JS challenge.

    Способ рабочий, работает в том или ином виде до сих пор. Тема коммерческая, поэтому ответ без готового решения (да и он не требуется, судя по ТЗ).
    Ответ написан
  • Как спарсить сайт с авторизацией через смс?

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

    Возможно. Создайте новый профиль хрома, пройдите в нем нужную аутентификации, затем используйте selenium или nodriver под этим профилем.
    Ответ написан
    Комментировать
  • Какие инструменты Вы используете для парсинга?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Интересует быстрый парсинг - зашел на сайт, посмотрел на код, минимум кода, скорость важна.

    BAS, Scrapy.
    Было бы еще неплохо чтобы инструмент был гибким - то есть парсил бы любые сайты.

    Так не бывает, увеличение универсальности и гибкости - увеличивает сложность.
    Или поделитесь пожалуйста Вашими инструментами

    Selenium, Appium, nodriver, requests.
    Ответ написан
    Комментировать
  • Как гугл вычисляет пользователя?

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

    Отпечаток посетителя, устройства, сети, геолокации. Больше информации ищите по ключу - FingetPrint.
    Можно ли это обойти? Как?

    Можно, используйте nodriver, мобильные/резидентские прокси, модифицированный браузер и напишите соответствующий софт.
    Ответ написан
    Комментировать
  • Как написать парсер с Вконтакте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    К сожалению я полный ноль в программировании

    В общем задача довольно проста

    Типичное ТЗ для фриланса.
    Если кто-то подскажет в какую сторону двигаться (читать, смотреть), или может ну его к чертям, если это потребует года учебы? Или может через GPT сделать какой-то хитрый запрос?
    Так как программирование мне не особо интересно и развиваться в этом направлении не планирую.

    - Если планируете зарабатывать программированием, то гуглим "Программирование на Python Марк Лутц", затем возвращайтесь с более конкретными вопросами.
    - В ином случае - https://freelance.habr.com/.
    Ответ написан
    Комментировать
  • Как выйти из бесконечной работы браузера при парсинге через 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 клиента.
    Ответ написан