Комментарии
39
Нужно пришлепнуть таракана, но тапка под руками нет. Зато я знаю как работает танк и вот он рядом стоит.
Откройте для себя python и lxml.html. Ну или что-то подобное
Откройте для себя python и lxml.html. Ну или что-то подобное
вы неправы, некоторые сайты понапичканы разнообразным JS, что пока найдешь что куда отправлять уже перехочется писать. А здесь быстро и задачу решает.
JS редко используется для основного наполнения сайта, если это не веб-приложение вроде gmail или prismatic. Сайты хотят чтоб их индексировали поисковики, а это значит, что и нам их будет не сложно разбирать.
Ха-ха-ха.
Попробуйте попарсить авито или авто.ру без выполнения яваскрипта, узнаете много нового =)
Попробуйте попарсить авито или авто.ру без выполнения яваскрипта, узнаете много нового =)
Я пошел смотреть, а Вы всё таки в двух словах тут расскажите, пожалуйста.
Яваскриптовые куки по которым отсекаются боты.
Если в двух словах.
Если в двух словах.
То есть с выключенным JS их сайт вообще не работает?
Все несколько сложнее, но если коротко — то да.
А вы парсили их? Если не секрет, то пользовались подобным описанному автором поста способом или выполняли JS, дабы сойти за обычного пользователя?
Описанный автором способ выполняет ЖС — поэтому работает очень хорошо.
Есть разные варианты добиться схожего варианта: phantomJS, или что совсем круто вебкит + C++ =)
Есть разные варианты добиться схожего варианта: phantomJS, или что совсем круто вебкит + C++ =)
Так PhantomJS и так использует WebKit.
Это немного другой подход. Это вам не в тапки)
А по-моему, с Selenium WD все получилось очень наглядно. Если под рукой танк, зачем каждый раз трогать тапки.
PS. Сам решал похожую задачу на ruby + nokogiri, тоже все очень прозрачно (правда, просто данные там не «вобьешь», надо все-таки понимать как передаются какие-то параметры).;
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 скриптом.
Авматизация парсера сводилась к тому, что ты даешь ему ссылку на страницу с объявлениями, например 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 строке видно, что скриншоты отключаются.
она годичной давности, но на гитхабе в свежем репозитарии в тестах: https://github.com/detro/ghostdriver/blob/master/test/java/src/test/java/ghostdriver/BaseTest.java на 81 строке видно, что скриншоты отключаются.
да и тестил вобщем-то сегодня
А вот неправда, PhantomJS Driver умеет делать скриншоты.
Вот пруфлинк, а вот пруфкод:
Скришот сохраняется. Правда, с google.com скриншот нормальный, а с selenide.org совсем кривой. Всё-таки PhantomJS ещё сыроват.
Вот пруфлинк, а вот пруфкод:
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 ещё сыроват.
Спасибо! Про селенид не знал.
Как говорится, спасибо за повод.
Написал статью в блоге: ru.selenide.org/2013/07/15/can-phantomjs-take-screenshots/
Написал статью в блоге: ru.selenide.org/2013/07/15/can-phantomjs-take-screenshots/
Ну а лучше пойти дальше и использовать CasperJS. Особенно если необходимо несколько страниц и форма.
Есть неплохой сервис от Яндекса — auto.yandex.ru. Индексирует не только irr.ru, но и avito.ru, drom.ru, am.ru и т.д (не сочтите за рекламу:) ), а так же есть подписка по нужным параметрам.
неправда ваша.
он не индексирует. он агрегирует фиды от партнеров, которыми как раз являются avito, drom и.т.д.
но auto.ru, например, отдает яндексу только регионы, москвы там нет. наверняка и остальные отдают с задержками, ведь тот же авито живет не только за счет рекламы, но и за счет продавцов, платящих за поднятие и т.д.
он не индексирует. он агрегирует фиды от партнеров, которыми как раз являются avito, drom и.т.д.
но auto.ru, например, отдает яндексу только регионы, москвы там нет. наверняка и остальные отдают с задержками, ведь тот же авито живет не только за счет рекламы, но и за счет продавцов, платящих за поднятие и т.д.
Грех будет не оставить здесь ссылку на Convextra. Она и данные сама выберет (не нужно писать какие-то свои XPATH просматривая верстку), и с периодичностью будет проверять новые объявления, и рассылку по ним организует и даже кукисы ваши автоматом подставит для сайта. Конечно, это не серебряная пуля, но 90% задач подобных этой она решает за 1 минуту (из которых 40 секунд уйдет на регистрацию :) )
делал то же самое на JSoup + sqlite + просмотрщик на Adobe Air.
я тут подумал, и знаете, картинка очень в тему.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Человеческий парсер на Selenium WD