ФорумПрограммированиеPHP для идиотовРасширения PHP → Как быстро и тихо спарсить каталог сайта?

Как быстро и тихо спарсить каталог сайта?

  • technobulka

    Сообщения: 4552 Репутация: N Группа: Джедаи

    Spritz 30 ноября 2014 г. 23:17

    Надо спарсить пару категорий одного сайта, но не для того, что бы спионерить инфу, а для того, что бы мониторить цены конкурентов.
    Пробовал обычным cURL'ом, но либо у меня руки кривые, либо он действительно медленно работает (пока только на локалке пробовал 16 секунд 3 страницы).
    Нашел этот магазин в яндекс маркете, значит у него есть волшебный yml/cvs/xls файлик со всем каталогом, но по какому адресу лежит, хер его знает.
    Подкиньте советов, как выпрямить руки, или как найти волшебный файлик.
    Высокоуровневое абстрактное говно
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 0:00, спустя 42 минуты 26 секунд

    Он может где угодно лежать, посмотри robots.txt, может повезет.

    Но вообще я бы не парсил сихронно, надо асинхронно парсить сайтик. Например через Scrapy (python). Суть в том, чтобы сделать одновркменно сотни запросов на страницы и коллбеками обрабатывать ответы, тогда не особо важно сколько генерирется страница

    adw/0
  • technobulka

    Сообщения: 4552 Репутация: N Группа: Джедаи

    Spritz 1 декабря 2014 г. 0:13, спустя 13 минут 34 секунды

    Он может где угодно лежать, посмотри robots.txt, может повезет.

    Там в первую очередь посмотрел. Уже была мысля найти мыло админа, ломануть каким-то раком и посмотреть в настройках маркета путь к файлу.

    Суть в том, чтобы сделать одновркменно сотни запросов на страницы…

    Попробовал curl_multi, быстрее стало только на одну секунду. Может это только на локалке так медленно?
    Высокоуровневое абстрактное говно
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 0:28, спустя 15 минут 4 секунды

    Попробовал curl_multi, быстрее стало только на одну секунду. Может это только на локалке так медленно?

    Я не знаю что такое curl_multi, но при асинхронном подходе ты должен ждать первые результаты "первые 16 секунд", а потом получать все остальные 100500 страниц непрерывно, без всяких задержек.

    adw/0
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 1:49, спустя 1 час 20 минут 16 секунд

    о, топик с гениями1 подпишусь, пачитаю, новае узнаю

    Сапожник без сапог
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 1:57, спустя 8 минут 45 секунд

    о, топик с гениями1 подпишусь, пачитаю, новае узнаю

    @phpdude, многопоточный дудокурл ему не поможет?

    adw/0
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 2:01, спустя 3 минуты 29 секунд

    о, топик с гениями1 подпишусь, пачитаю, новае узнаю

    @phpdude, многопоточный дудокурл ему не поможет?

    @adw0rd, ктоб ему его дал то?)

    Сапожник без сапог
  • technobulka

    Сообщения: 4552 Репутация: N Группа: Джедаи

    Spritz 1 декабря 2014 г. 2:02, спустя 1 минуту 39 секунд

    @phpdude, дай :3
    Высокоуровневое абстрактное говно
  • Sinkler

    Сообщения: 9658 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 2:40, спустя 37 минут 42 секунды

    Попробовал curl_multi, быстрее стало только на одну секунду. Может это только на локалке так медленно?

    Я не знаю что такое curl_multi, но при асинхронном подходе ты должен ждать первые результаты "первые 16 секунд", а потом получать все остальные 100500 страниц непрерывно, без всяких задержек.

    @adw0rd, видимо, он имеет ввиду это PHP: curl_multi_init - Manual [php.net]

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 2:52, спустя 11 минут 23 секунды

    @Sinkler, да, я даже нагуглил, но всеравно не пытался даже понять как с ним работать) Я бы точно взял Scrapy он на Twisted. Я с ним уже работал, он хорошо справляется

    Спустя 52 сек.

    Думаю для человека знакомого с js проще написать все на node.js, архитектура как раз позволяет делать запросы и не ждать ответа, а обрабатывать все в коллбеках

    adw/0
  • Sinkler

    Сообщения: 9658 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 2:54, спустя 2 минуты 16 секунд

    @Stasovsky, отдебажь время обработки каждой страницы из тех трёх

  • technobulka

    Сообщения: 4552 Репутация: N Группа: Джедаи

    Spritz 1 декабря 2014 г. 3:01, спустя 7 минут 6 секунд

    @Sinkler, сейчас 9 страниц за 6 секунд парсит. Каждый запрос в среднем 0.54 и последний больше секунды.
    Высокоуровневое абстрактное говно
  • Sinkler

    Сообщения: 9658 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 3:08, спустя 6 минут 55 секунд

    @Stasovsky, запусти на линуксе, посмотри время. pcntl на винде точно не работает, про реализацию многопоточности в libcurl под виндой не знаю, но по твоим результатам они идут последовательно

  • technobulka

    Сообщения: 4552 Репутация: N Группа: Джедаи

    Spritz 1 декабря 2014 г. 3:10, спустя 2 минуты 35 секунд

    @Sinkler, да я так и понял, что последовательно. Щас вообще перебил на HttpSocket XD
    Время проверял на ремоуте, там, вроде убунта, или центос.

    {+++91+++}
    И я всё это делаю в рамках движка на кейке. Ну и node.js хезе как поставить))
    Высокоуровневое абстрактное говно
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 1 декабря 2014 г. 3:20, спустя 9 минут 8 секунд

    Думаю как поставить ноду можно найти в гугле за 2 секунды)

    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!