Комментарии 39
Нужно пришлепнуть таракана, но тапка под руками нет. Зато я знаю как работает танк и вот он рядом стоит.

Откройте для себя python и lxml.html. Ну или что-то подобное
вы неправы, некоторые сайты понапичканы разнообразным JS, что пока найдешь что куда отправлять уже перехочется писать. А здесь быстро и задачу решает.
JS редко используется для основного наполнения сайта, если это не веб-приложение вроде gmail или prismatic. Сайты хотят чтоб их индексировали поисковики, а это значит, что и нам их будет не сложно разбирать.
Ха-ха-ха.
Попробуйте попарсить авито или авто.ру без выполнения яваскрипта, узнаете много нового =)
Я пошел смотреть, а Вы всё таки в двух словах тут расскажите, пожалуйста.
Яваскриптовые куки по которым отсекаются боты.
Если в двух словах.
А вы парсили их? Если не секрет, то пользовались подобным описанному автором поста способом или выполняли JS, дабы сойти за обычного пользователя?
Описанный автором способ выполняет ЖС — поэтому работает очень хорошо.
Есть разные варианты добиться схожего варианта: phantomJS, или что совсем круто вебкит + C++ =)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А по-моему, с Selenium WD все получилось очень наглядно. Если под рукой танк, зачем каждый раз трогать тапки.

PS. Сам решал похожую задачу на ruby + nokogiri, тоже все очень прозрачно (правда, просто данные там не «вобьешь», надо все-таки понимать как передаются какие-то параметры).;
НЛО прилетело и опубликовало эту надпись здесь
вы думаете по ноду нет свистелок типа «lxml.html»? ох-ох-ох-ох…
Хорошо бы чтобы разработчики подобных сайтов проявляли инициативу и за некоторую плату осуществляли самостоятельно рассылку новых объявлений. Это явно профит в обе стороны
Был подписан на auto.yandex.ru/ как раз там и есть подписка на новые объявления по нужным критериям, правда не чаще двух раз в сутки, зато это агрегатор многих досок автообъявлений.
Ну вот на фрилансим очень хорошо сделано: бесплатно рассылка каждый день утром, за регистрацию. За деньги — сразу после публикации.
Писал нечто подобное под irr.ru
Авматизация парсера сводилась к тому, что ты даешь ему ссылку на страницу с объявлениями, например irr.ru/real-estate/apartments-sale/search/rooms=2/currency=RUR/
В случае появления нового объявления (проверка через cron каждую минуту) — отправление СМС (через EmailToSMS) мне на телефон. Данные скрипт сохраняет в файл.

Итог: 1 скрипт на PHP + Cron на любом хостинге + Активация услуги EmailToSMS = PROFIT

P.S. Если кому интересно – могу поделиться PHP скриптом.
Осталось только Selenium на PhantomJS заменить и будет совсем круто :)
Я на Phantom'e столкнулся с проблемой доступа к вновь отрытой вкладке. И помня это пересел на Selenium. Хотя тут можно и Phantom'ом ограничиться.
Вообще-то Selenium Webdriver поддерживает много разных браузеров, в том числе PhantomJS. То есть заменять ничего не надо, надо просто сказать Selenium, чтобы он в качестве браузера использовал PhantomJS.
Да, спасибо я в курсе. Но у меня возникали проблемы, где-то полгода назад. Поэтому думал не рисковать. Можете на гитхабе, изменить одну строчку, если по нраву PhantomJS
жаль пока драйвер для фантома не поддерживает скриншоты
вот презентация полезная для общего ознакомления: http://cdn.ivandemarino.me/slides/speed_up_selenium_with_phantomjs/index.html#ghostdriver-project-status

она годичной давности, но на гитхабе в свежем репозитарии в тестах: https://github.com/detro/ghostdriver/blob/master/test/java/src/test/java/ghostdriver/BaseTest.java на 81 строке видно, что скриншоты отключаются.
А вот неправда, PhantomJS Driver умеет делать скриншоты.
Вот пруфлинк, а вот пруфкод:

import static com.codeborne.selenide.Selenide.open;
import static com.codeborne.selenide.WebDriverRunner.closeWebDriver;
import static com.codeborne.selenide.WebDriverRunner.takeScreenShot;

public class TestPhantomScreenshot {
  public static void main(String[] args) {
    System.setProperty("browser", "phantomjs");
    open("http://google.com");
    takeScreenShot("phantomjs");
    closeWebDriver();
  }
}


Скришот сохраняется. Правда, с google.com скриншот нормальный, а с selenide.org совсем кривой. Всё-таки PhantomJS ещё сыроват.
Ну а лучше пойти дальше и использовать CasperJS. Особенно если необходимо несколько страниц и форма.
Есть неплохой сервис от Яндекса — auto.yandex.ru. Индексирует не только irr.ru, но и avito.ru, drom.ru, am.ru и т.д (не сочтите за рекламу:) ), а так же есть подписка по нужным параметрам.
неправда ваша.
он не индексирует. он агрегирует фиды от партнеров, которыми как раз являются avito, drom и.т.д.
но auto.ru, например, отдает яндексу только регионы, москвы там нет. наверняка и остальные отдают с задержками, ведь тот же авито живет не только за счет рекламы, но и за счет продавцов, платящих за поднятие и т.д.
Грех будет не оставить здесь ссылку на Convextra. Она и данные сама выберет (не нужно писать какие-то свои XPATH просматривая верстку), и с периодичностью будет проверять новые объявления, и рассылку по ним организует и даже кукисы ваши автоматом подставит для сайта. Конечно, это не серебряная пуля, но 90% задач подобных этой она решает за 1 минуту (из которых 40 секунд уйдет на регистрацию :) )
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.