LINUX.ORG.RU
ФорумTalks

Мониторинг изменений на сайтах с помощью поисковых систем.

 , ,


0

1

навеяно этой Почему блокируется краулер? темой. Многим нужен мониторинг отдельных страниц avito да и других сайтов, постоянно сталкиваюсь с этим. А если такой способ вообще без обращения к сайту?

Вкратце звучит так: получаем кэш гугла и записывается контент куда нибудь в переменную потом периодически сравниваем то что у нас уже есть и то что в кэше если не изменилось то ничего не делаем, а вот если изменилось то вычисляем что изменилось на нужных нам страницах. Такие сайты как авито индексируются довольно часто и задержка будет небольшой. Будет работать такой способ как думаете? Главное что не надо обращаться непосредственно к сайту с его защитой. Гугл тоже вроде не будет против это ведь не SERP а кэш

★★☆☆

Последнее исправление: XoFfiCEr (всего исправлений: 4)

Ответ на: комментарий от mydibyje

он редко что то архивирует, ну не так часто как google.

и потом внутренние страницы он вообще редко архивирует и там часть контента может пропасть.

XoFfiCEr ★★☆☆
() автор топика
Последнее исправление: XoFfiCEr (всего исправлений: 1)

Думаю ПС введет ограничительные меры еще быстрее avito (капча, например). Тут или делать нормальный эмулятор действий пользователя/поискового робота и не наглеть с запросами к торговой площадке или воспользоваться сервисом предоставляющим готовое API (https://rest-app.net/api, если не для какой-то фигни описанное в ОП, то 3000 руб./месяц - это недорого).

Stack77
()
Ответ на: комментарий от Stack77

ну пока скрипт на python при коннекте выдает 200 ok не знаю сколько это будет продолжаться, но ведь так и парсить можно спокойно. А 3k рублей в месяц дороговато как то.

XoFfiCEr ★★☆☆
() автор топика
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от XoFfiCEr

ну пока скрипт на python при коннекте выдает 200 ok

Не факт (наверное), что с капчей обязан вернуться код отличный от 200

А 3k рублей в месяц дороговато как то.

Как посмотреть, от цели зависит. Магазины поболее 3к в сутки тратят за размещение объявлений на подобных площадках.

Stack77
()
Ответ на: комментарий от XoFfiCEr

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

mydibyje ★★★
()

Сам я такие задачи питоном решаю, а когда вешают защиту от ддоса, то добавляю вебдрайвер. Например так сделал автоскачивание сериалов с лоста.

А если такой способ вообще без обращения к сайту?

Да, если у ты админ данного сервера или у тебя есть доступ к БД.

Lordwind ★★★★★
()
Ответ на: комментарий от XoFfiCEr

И вообще кэш это статика.

Никто и не спорит :)

да нет контент он тоже вернул но там что то с кодировкой

Там, наверное, не с кодировкой проблема, а парсер не разбирает нормально код. Гугл не очень валидную «шапку» вставляет. Нужно код до !DOCTYPE вырезать, потом с DOM работать.

Просто, сам факт того, что рано или поздно появится каптча или иная защита - обязывает обрабатывать подобные ситуации, соответственно автоматизировать на 100% процесс не получится.

To @mydibyje

Можно ещё archive.org использовать.

У них, кстати, даже API есть. Но, скорость кэширования вряд ли устроит.

Там вроде можно вручную отправлять адреса для архивации

Может спасет, хотя как-то геморройно это всё.

Как бы основная цель сбора подобных данных - извлечение прибыли (своя база/торговая площадка/etc), какой тогда смысл изобретать велосипед с постоянно спадающей цепью, если можно заплатить 3к в месяц и пользоваться нормальным API. А если прибыль от затеи даже это не покрывает, на фига тогда такой проект нужен?!

Stack77
()
Ответ на: комментарий от Stack77

какой парсер? там просто file_get_contents и все, а что я могу к этому добавить? На php перешел. А до doctype и нет ничего.

XoFfiCEr ★★☆☆
() автор топика
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от Lordwind

так я не пытаюсь подключиться к базе данных, просто скриптик 3-4 раза в сутки будет запускаться с помощью cron и проверять изменилась ли страница в кэше, если изменилась то какие изменения.

XoFfiCEr ★★☆☆
() автор топика
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от Stack77

если можно заплатить 3к в месяц и пользоваться нормальным API

Плюсану, даже если это для себя и дорого, можно найти кому оно ещё нужно и скинуться.

ddidwyll ★★★★
()
Ответ на: комментарий от XoFfiCEr

там просто file_get_contents и все, а что я могу к этому добавить?

libastral говорит, что ты не передаешь заголовки, а дядя Вася за тебя их передавать тоже не хочет.

<?php
    $url = "https://webcache.googleusercontent.com/search?q=cache:avito.ru";

    $options = array(
        "http"=>array(
            "header"=>"User-Agent: Mozilla/5.0 (Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0\r\n"
        )
    );

    $result = file_get_contents($url, false, stream_context_create($options));
    echo $result;

А до doctype и нет ничего.

Есть.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><base href="https://www.avito.ru/rossiya"><style>body{margin-left:0;margin-right:0;margin-top:0}#bN015htcoyT__google-cache-hdr{background:#f8f9fa;font:13px arial,sans-serif;text-align:left;color:#202124;border:0; .....

<!DOCTYPE html>
Stack77
()
Последнее исправление: Stack77 (всего исправлений: 2)
Ответ на: комментарий от Stack77

да пока не передавал я же только пробую.

Зы я в view-code смотрел.

XoFfiCEr ★★☆☆
() автор топика
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от ddidwyll

на практике это нереально: кто то обязательно забудет заплатить или откажется от дальнейшего участия. В результате придется тянуть самому. И не очень предсказуемо как отнесется к запросам с разных ip-адресов но с одного токена этот самый https://rest-app.net/api

XoFfiCEr ★★☆☆
() автор топика
Ответ на: комментарий от Stack77

В твоем коде какая то ошибка, не работает. Ну вообщем сделал файл checker.php это чисто по avito по главной странице настроил cron чтоб он запускал этот файлик каждые 6 часов. Завершено с кодом 255 это все ок?

XoFfiCEr ★★☆☆
() автор топика
Ответ на: комментарий от XoFfiCEr

В твоем коде какая то ошибка, не работает.

Х.з. что у тебя не работает. С кодом все хорошо.

Писал бы на питоне, раз все равно локально CRON’ом запускаешь. Зачем тебе php, который ко всему ты плохо знаешь? Тебе же данные вытащить, разобрать и в локальную базу записать - питон в твоем случае лучше. А уже с готовыми записями в БД, можно и на php работать, если web-бэк нужен.

Завершено с кодом 255 это все ок?

Явно нет. Путь к файлу неверный в CRON или со скриптом что-то.

Stack77
()
Ответ на: комментарий от Stack77

ну я не буду запускать каждый раз вручную python скрипт ибо у бегета только python 2. что то такое получилось в результате после обработки

https://xofficer.ru/services/monitoring-content-changes/

XoFfiCEr ★★☆☆
() автор топика
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от Stack77

да, странное что то (фрагмент):

$arr = explode('и введите запрос в поле поиска.', $rcnt);    //разделение
$gcon = $arr[0];        //это та гугловская вставка сверху google content
$pcon = $arr[1];        //это сам контент страницы
$data_md5 = md5($pcon);
echo $data_md5;             //добавлял эту строку в процессе отладки если убрать эту строку скрипт почему то вообще не работает хз что

XoFfiCEr ★★☆☆
() автор топика
Последнее исправление: XoFfiCEr (всего исправлений: 3)
Ответ на: комментарий от Stack77

короче полный облом получился Stack77 google оказывается не кэширует по глубине каталогов. Только один каталог и все типа avito.ru/saratov например вот это да! То что дальше ничего не кэшируется.

XoFfiCEr ★★☆☆
() автор топика
Последнее исправление: XoFfiCEr (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.