Но тратить время на рутинные операции по поиску и добавлению профессионалов в социальной сети не хотелось. После 2000 кликов вручную критерии поиска у меня оказались формализуемые. Поэтому написал скрипт который экономит мое время и зрение. К общению с людьми я не пускаю бездушного «робота». Сам пишу и сам отвечаю.
Мне посчастливилось познакомиться и пообщался с интересными людьми из индустрии, получить сотни сообщений со спамом и ссылки на сотни вакансий. Готового скрипта здесь не будет, но в публикации есть пара фрагментов кода для магии webdriver и ссылки. Также вы узнаете последние новости про поиск работы в России и описание моего опыта по продвижению в соцсети…
Это только присказка...
Мой опыт
Путь от 160 контактов в соцсети до 30000 контактов занял у меня пол года. Добавлял небольшим количеством запросов в сутки. Во-первых я никуда не спешил. Провел пару недель на больничном — перенес ЛОР операцию и еще пару недель после больничного я восстанавливался. На дворе было лето и можно было загорать в обед и кататься на велосипеде. В конце лета выбрались на море на пару недель. Собрал очередной станок с ЧПУ собственной разработки на рельсовых направляющих, с возможностью «рулить» из программы в JVM. Я продолжал заниматься любимым делом но теперь уже все 8 часов в день. Программировал на java и groovy, но уже для своих хобби-проектов. Изучал новые технологии, которые популярны на рынке.
А в это время скрипт пару раз в день трудился за меня — искал и добавлял новые контакты. Я отвечал на сообщения, общался с людьми и тратил на это не больше получаса в день.
Надежды, как на платформу для публикаций новостей на профессиональные темы себя не оправдали. Сотни просмотров публикаций, минимальная активность пользователей.
Больше 30000 не добавить из-за искусственного ограничения сети. Сейчас у меня 320 запросов от людей на добавление их в контакты, но из-за этого ограничения добавить их я не могу.
Продолжительное время я был на 1м месте по числу просмотров среди своего первого круга и первое место по просмотрам сотрудников последнего места работы. Проверено, что это превосходство не дает ничего полезного!!! Я всегда пользовался бесплатным аккаунтом и не видел смысла вступать в маркетинговые акции сети «введите номер вашей банковской карты — первый месяц бесплатно».
К примеру, есть в LinkedIn таки люди, так называемые LION-ы (LinkedIn Open Networkers). Это люди, которые добавляют к себе всех подряд, без разбору. У них бывает по 10-20 тысяч контактов. Если нарисовать все связи в мире в виде сетки – LION-ы будут выглядеть толстыми жирными точками-узлами. Благодаря LION-ам до президента Oracle вам может понадобиться не 6 связей а всего-навсего 3.
Так вот – когда будете коннектиться с людьми – добавляйте как можно больше LION-ов. Возможно завтра вы выйдете на человека (или он на вас) связаться с которым вы сможете как раз благодаря свеже-добавленному LION-у!
Это по ссылке от xcore78 в комментарии к этой статье. Здесь же почему-то мой разборчивый скрипт отождествляют с спамом, хотя по сути мой профиль по качеству контактов релевантнее ИТ чем у так почитаемых LION. И никаких сообщений с товарами услугами или вопросами я не посылаю. Отправил запрос на установление контакта и если не ответили пошел дальше!
Что мне понравилось — можно получить интересные сообщения и узнать о новом, когда добавляешь незнакомого пользователя в контакты. Ну и самый приятный и неожиданный наплыв сообщений был поздравлениями с днем рождения — около 200 входящих!
В основном, предложения вакансий были с переездом за границу, но не в самые интересные локации. На нашем рынке предлагали много вакансий либо в неинтересных предметных областях где особо и не нужна моя экспертиза и технические знания, либо это вакансии в компаниях про внутренние условия в которых я знал от разных людей, либо оплата меня не устраивала.
Чтобы пройти череду интервью и через жернова формальных тестов и миллионов алгоритмических задач в google и компании с подобным конкурсом мне жалко сил и скорее всего зря потерянного времени. Хотя мне и приходило предложение поучаствовать в этом увлекательном процессе. К тому же негативный опыт говорит, что выполнение даже сложных тестовых заданий с написанием кода по TDD на собеседовании или после него не гарантирует что будешь после этого заниматься интересной работой по профессии с технически сложными задачами.
Новости прошлой недели
Кроме покупки социальной сети Microsoft, что стало для меня сюрпризом, следующие новости шокировали еще больше. Мосгорсуд признал законным решение о блокировке LinkedIn в России. Суть претензий к соцсети — несоблюдение закона «О персональных данных», который требует чтобы сервера с данными граждан находились на территории России. И эта новость была об отклонении апелляции соцсети по прошлому решению Таганского районного суда Москвы.
Самое забавное во всем этом — это комментарий Ольги Голодец. Она заявила, судя по публикации в новостях, что одной из основных возможностей для трудоустройства россиян остается портал Роструда — общероссийская база вакансий «Работа в России». Я впервые узнал о его существовании из новостей. А вы, как ИТ профессионалы, часто им пользуетесь и слышали про него?
Программная часть
По вполне понятным причинам, в том числе, чтобы избежать хабрэффекта, скрипт я не буду раздавать. Но той информации, которую я публиковал на хабре вместе с моими примерами по ссылкам на гитхаб, хватит для желающих автоматизировать рутинное взаимодействие с почти любыми веб сайтами.
Есть пословица: дай голодному рыбу — и ты накормишь его на один день. Дай ему удочку, научи его ловить рыбу — и ты накормишь его на всю жизнь.
Все про что я рассказываю основано на open source.
Капитализм как нам его рисуют: не кормить голодного рыбкой, а дать ему удочку.
Капитализм как он есть на самом деле: не давать удочку, а продать ее в кредит, не давая голодному понять, что ни доступа к рыбному пруду, ни права на отлов у него все равно нет, т. к. и пруд и рыба давно принадлежат тем, кому он теперь еще и за удочку должен…
Снова возвращаясь к технологиям. Раньше уже рассказывал на хабре про вебдрайвер «Что нам стоит сайт распарсить. Основы webdriver API». Рекомендую прочитать для начала ту статью, а здесь лишь опишу новую информация из личного опыта про то как автоматически загрузить и подключить к программе вебдрайвер для chrome, как скроллировать из скрипта страницу по вертикали. И если «безголовый» браузер PhantomJS сайту легко обнаружить и заблокировать ваш аккаунт, то с chromium+webdriver так легко это не сделаешь.
Автоматическая установка драйвера для chrome
В webdriver для реального браузера кроме API на стороне клиента есть и исполнимая в отдельном процессе часть, которая делает браузер марионеткой нашего приложения.
Часто его скачивают вручную и указывают путь в приложении. Но зачем, если можно это сделать автоматически.
Для этого в JVM приложении нужно добавить зависимость com.github.igor-suhorukov:mvn-classloader:1.6.
В зависимости от того, какая у вас операционная система передать в качестве значения os win32, linux64 или mac64. win32 работает и на 64 разрядных системах.
String chromedriver = MavenClassLoader.usingCentralRepo().resolveArtifact("com.github.igor-suhorukov:chromedriver:bin:" + os + ":2.24").getFile();
// в случае linux нужно сделать в программе chmod(chromedriver);
System.setProperty("webdriver.chrome.driver", chromedriver);
Сравним с тем как это делали для PhantomJS:
// зависимость для проекта com.github.igor-suhorukov:phantomjs-runner:1.1
import com.github.igorsuhorukov.phantomjs.PhantomJsDowloader
...
String phantomJsPath = PhantomJsDowloader.getPhantomJsPath()
Прокрутка окна с динамической подгрузкой данных
Код ниже работает у меня в chromium и скролирование страницы вызывается из метода submitRequest. Для прокрутки окна использую javascript и чтобы выполнить его из контекста страницы нужно привести тип вебдрайвера к типу org.openqa.selenium.JavascriptExecutor. Данные страницы при прокрутке подгружаются динамически.
private static void submitRequest(WebDriver driver) throws InterruptedException {
...
scroll((JavascriptExecutor) driver, (long) (MIN_SCROLL + Math.random() * SCROLL_INTERVAL));
...
}
private static void scroll(JavascriptExecutor javascriptExecutor, long maxScroll) throws InterruptedException {
long valPrev = 0;
long val = 0;
while (valPrev< maxScroll && (val = scrollViewport(javascriptExecutor)) >valPrev){
valPrev = val;
Thread.sleep((long) (MIN_TIME+Math.random()*TIME_INTERVAL));
}
}
private static Long scrollViewport(JavascriptExecutor driver) {
return (Long) driver.executeScript("var h=document.documentElement.scrollHeight; window.scrollTo(0, h); return h;");
}
Что дальше?
Написание скрипта с webdriver решает лишь малую часть того что нужно сделать для поиска. И золотая рыбка все еще не поймана. К тому же жизнь полна сюрпризов! И что будет дальше после блокировки социальной сети мы узнаем в ближайшее время. Жаль лишь будет потерять возможность общаться с профессионалами из сфер далеких от ИТ, кто все еще не умеет пользоваться VPN или Tor…
P.S. 18.11.2016 Мило, у меня даже интернет провайдер не возвращал деньги при отсутствии интернет…
Комментарии (63)
Antelle
14.11.2016 11:23+11получитьотправить сотни сообщений со спамомfixed
igor_suhorukov
14.11.2016 13:26-5Вы остряк! Если бы я спамил, то давно уже заблокировали бы аккаунт…
Antelle
14.11.2016 13:28+9Теперь представьте, что так как вы, будут делать все. Вам будет приятно это читать? То, что на этот кейс нет аналитики, не значит, что это не спам-рассылка.
igor_suhorukov
14.11.2016 13:35-5Спам — массовая рассылка сообщений. Я же сообщения не посылал!
Запросы на добавление в контакты постоянно идут от незнакомых людей. Что со скриптом, что без него. В соцсети ничего не изменилось. К тому же если отклонили заявку, повторно тому же человеку его не отправляю.
igor_suhorukov
14.11.2016 14:41Там есть много аккаунтов иностранцев с символами LION в имени. Так вот их цель точно также максимально расширить круг проф. знакомств.
Hayate
14.11.2016 11:36+20Раздражает когда на линкед ин постоянно хз кто пытается добавиться в список контактов. У тех коллег которые не отклоняют спамеров список контактов представляет странное зрелище. Там и натяжные потолки, и технические директора. Если пошукать, то наверное есть профессиональный выгул кошек и ногтевой сервис. Временами напоминает помойку.
igor_suhorukov
14.11.2016 13:01-1У меня несколько коллег таким способом нашли отличные проекты. Точнее к ним постучались заграничные HR и они подтвердили контакт.
pehat
14.11.2016 14:28+10Согласен. А еще заграничные HR имеют практику написания cover letter и стучатся в друзья с конкретными предложениями (название компании и вакансия), а не сообщениями вида «Присоединяйтесь к моей профессиональной сети контактов».
Hayate
15.11.2016 06:41Ну да. Зато у всех остальных сотен тысяч в рекомендациях появляются контакты «дешёвые грузоперевозки», «сборные заказы из китая», загадочный БМ, «детские утренники эконом». Это если не считать помимо рекомендаций прямых запросов на добавление в список контактов. Релевантность в итоге пробивает одно дно за другим.
Зато пара человек нашли отличные вакансии.igor_suhorukov
15.11.2016 10:59Сейчас я открою вам страшную тайну, как я лет 10 до этого удерживал 160 контактов. Во вкладке «My network -> Connections» напротив каждого пользователя есть элемент Remove. Так можно, например, пообщавшись с незнакомым вам HR удалить из контактов его после общения.
Hayate
15.11.2016 11:08А как это связано с тем что мой список «возможно вы их знаете» постоянно обновляется сиделками для престарелых и производителями крафтового домашнего хлеба? Я удалю оттуда всех, а немного погодя там опять этот трэш.
igor_suhorukov
15.11.2016 11:19А, так из «Возможно я знаю» удалять и не надо. Это знакомые знакомых — т.е. ваш второй круг знакомств.
Просто туда не заходите, просто смиритесь с их существованием среди ваших знакомых.
Удалять нужно из списка ваших личных контактов.
APXEOLOG
14.11.2016 11:47+3Не совсем понял зачем нужен webdriver. Что мешало написать бота на уровне HTTP/REST API LinkedIn'а?
igor_suhorukov
14.11.2016 13:01Не уверен что такой же фокус прошел бы с REST API LinkedIn
APXEOLOG
14.11.2016 14:23Откровенно говоря я встречал защиту от использования REST API только в редких браузерных играх (где боты могут являться большой головной болью). С высокой вероятностью можно утверждать что все будет отлично работать и так, максимум — подменить пару хедеров чтобы сервер думал что общается с обычной страницей
Abiboss
14.11.2016 12:59+6Не совсем понимаю, зачем нужна сеть из, как я понял, незнакомых контактов на 30 тысяч человек. На ум только приходит изготовить из всего этого опыта программный продукт, которым можно торговать гламурным кисам во вконтакте под соусом «новой социальной сети для деловых девушек».
immaculate
14.11.2016 15:17+1Не понимаю шума вокруг этой сети. Ладно бы, она представляла какую-то ценность. У меня к ней сразу следующие претензии:
— некрасивый устаревший дизайн из 90-х
— постоянно тормозит, список уведомлений каждый раз открывается с очень ощутимой задержкой
— забрасывает спамом по email, отписывание не помогает, я отписывался раз 5 уже, наверное, все равно письма начинают идти снова
Находили как-то работу без LinkedIn, и дальше будем находить. По-моему, ценность этого ресурса сильно преувеличена. У меня сложилось однозначное впечатление: спамосеть. Данная статья отлично еще больше убедила в правильности моих ощущений.alexeykuzmin0
14.11.2016 17:55+3А вот я из последних трех интересных предложений два получил благодаря LinkedIn. У всех все по-разному.
Oxoron
17.11.2016 11:22+1Начал получать предложения через неделю после того как занял Senior позицию в местной крупной компании. Точнее, до смены работы получал предложения пару раз в год, после смены — раз в пару дней.
Поинтересовался у HR — LinkedIn при поиске используется очень активно.
kartvladek
14.11.2016 19:05Да, согласен — создал из интереса 5 лет тому набрал 36 контактов — интерес пропал, практическая полезность = 0
webkumo
14.11.2016 19:41+4Вы, простите, интернет-то в 90х видели? В каком месте там дизайн 90х? Там дизайн нулевых… Но да, не на острие прогресса (а оно нужно?)…
MacIn
14.11.2016 20:45+3У меня к ней сразу следующие претензии:
— некрасивый устаревший дизайн из 90-х
Ага, а вот и повод зарегистрироваться там.
DenimTornado
14.11.2016 15:19«Жаль лишь будет потерять возможность общаться с профессионалами из сфер далеких от ИТ, кто все еще не умеет пользоваться VPN или Tor…»
Вот это не понял, Linkedin, что, панацея? Кроме него негде найти людей?
newpdv
14.11.2016 16:18-3а эту соцсеть заблокируют в РФ
и слава небесам.
количество спама от этого портала исчисляется тоннами, причем я там ни разу не регистрировался и ни на что не подписывался.khanid
15.11.2016 00:35+1Но есть же функция «отписаться». Прямо в тех же письмах внизу.
You are receiving notification emails from LinkedIn. Unsubscribe.
Хотя уважаемый immaculate выше пишет, что отписывание не помогает. Не могу сказать ничего о правдивости того или иного утверждения.
xcore78
14.11.2016 16:33+4Сеть контактов работает только если набрана вручную, путем скурпулёзного выбора и последующего отсева. В таком случае соотношение сигнал/шум достаточно велико.
Число контактов само по себе ничего не значит (с одной, пожалуй, оговоркой: кроме заветного «500+» — к этому стоит стремиться, не забывая о качестве выборки).
Автор, как и все комментаторы «а зачем нам эта спам-сеть, и без неё проживем», не сумел найти хороший материал по использованию linkedin. Эта ссылка в своё время помогла мне и ещё десятку человек: http://blog.olegdubas.com/2013/03/15/linkedin/
khanid
15.11.2016 00:40+1Она заявила, судя по публикации в новостях, что одной из основных возможностей для трудоустройства россиян остается портал Роструда — общероссийская база вакансий «Работа в России». Я впервые узнал о его существовании из новостей. А вы, как ИТ профессионалы, часто им пользуетесь и слышали про него?
Теперь вот и я узнал. Правда не уверен, что не забуду названия через неделю/другую.
Saffron
15.11.2016 01:00У меня есть чисто технический вопрос. Я читал документацию на selenium, но так и не понял, можно ли с его помощью вытаскивать html код страницы? Допустим, я зашёл на страницу, пощёлкам по кнопочкам и хочу сохранить текущее представление сайта в html, или лучше xml, и дальше уже в своё удвольствие парсить и сохранять на диск. Вся документация построена на предположении, что селениум используется как средство для тестирования, а не извлечения информации. Может я что-то пропустил?
riko
15.11.2016 22:38selenium предназначен для управления веб приложением (читай кликать в браузере), если вам нужно получить html страницы и дальше её парсить — более подходящий инструмент jsoup, например
Saffron
16.11.2016 12:25+2Большая часть веб мастеров уже забыла и не знает, что такое html страница. Они оперируют только термином «веб-приложение», а тут уже без полной эмуляции браузера — никуда.
riko
17.11.2016 10:35Инструмент подбирается, конечно под задачу. Проблема селениума, что он не «эмулирует», а непосредственно управляет браузером, что хорошо для QA, где нужно точно проверить как приложение ведёт себя в реальном окружении. А вот для задач, где нужно просто что-то сделать эмулируя действия пользователя, больше подходит HtmlUnit, например.
zahmTOD
15.11.2016 10:45В моем случае эта сеть была более чем бесполезна. Гораздо эффективнее специализированные соцсети. Типа как для дизайнеров, программистов, менеджеров и т.д.
Oxoron
15.11.2016 11:09+1Можно линк сети для программистов? Можно в личку.
zahmTOD
15.11.2016 12:22Я не программист, поэтому не подскажу. Но, например, moikrug.ru )
Тут, обсудили эту тему со стороны заказчика/кадровика. Например человеку дали задание купить гвоздей.Он пошел в ашан и купил какие-то гвозди, или пошел в специализированный магазин метизов, и офигевши от выбора, купил самые подходящие гвозди. Конечно если он вообще знает, какие ему нужны гвозди. А если не знает, то в метизном магазине ему посоветуют и помогут с выбором. Как-то так.Oxoron
15.11.2016 12:59Вы понимаете, что единственные специализации «Моего Круга» — географическая и языковая? И это далеко не программистская соц-сеть, там же висят вакансии менеджеров, дизайнеров, аналитиков…
zahmTOD
15.11.2016 13:06+1Конечно, я и пишу, что я не программист, мне не нужно, я не знаю.
Для дизов есть всякие бехансы, дропры и прочее
ZCFD
16.11.2016 11:50После 5 000 контактов включается ограничение на отправку приглашений в первый круг. ( те нельзя отправить 30 к приглашений ) — как это обходили? и как все же вышли на 30 k?
igor_suhorukov
16.11.2016 11:54Впервые слышу о таком ограничении. Аккаунт там у меня 11 лет. Может просто много пользователей жаловалось что не знают вас. У меня где-то 70% запросов подтверждали — так как видимо эти запросы были релевантны желаниям людям. К тому же не отправлял повторно запрос одному и тому же пользователю.
vvscode
16.11.2016 14:31LinkedIn initially allows all users to send up to 5000 invitations. This limit is an automatic method to prevent accidental abuse and protect both senders and recipients.
_https://www.linkedin.com/static?key=pop%2Fpop_more_invitation_limitsigor_suhorukov
16.11.2016 14:32Разгадка похоже по вашей ссылке:
LinkedIn encourages all users to connect to their trusted professional contacts, and to others who welcome connections with new contacts. Users who limit their invitations to these two groups have high invitation acceptance rates and LinkedIn will usually raise the limit for such inviters.
Nikobraz
Не для ИТ. Там вакансии «инженеров-программистов» в гос.учреждения с окладом 10000р.
igor_suhorukov
Вот и я о том же.
rikert
Ой-ли. Там и Яндекс выкладывает свои вакансии на программистов с окладом 30000р.
pehat
А можно пруфы? Во-первых, Яндекс не указывает з/п в своих вакансиях, во-вторых, там такие з/п бывают явно для практикантов на четверть ставки, а не для программистов.
rikert
Инженер-Программист за 12000р
Программист за 45 000р
Там же: Яндекс.Такси, Яндекс.Маркет Лаб
Сейчас за 30-ку нет, но конечно можно сказать что и не было раз сейчас нет, ведь вакансия она вечная, правда? Зато есть за 12.
pehat
Пруфы — это когда со ссылкой.
rikert
Ссылка у меня не вставляется, нет нужного статуса. Сам зайди, для этого отдельно образование или специализацию получать не нужно. Давай я расскажу как: вводишь в гугле (это поисковик такой) «общероссийская база вакансий «Работа в России»», переходишь по ссылке, в левой колонке выбираешь программист, в регионе — Москва, и получаешь список, потом крутишь его крутишь вниз, а там уже и Яндекс тебе рукой замашет, заботливо предлагая вступить в свой штат за 12 т.р.
Вот: https://trudvsem.ru/vacancy/card/1027700229193/cadd5c52-bae5-11e5-bbaf-3bdbd1a6e39d
pehat
Вы бы не переходили на личности, особенно когда предлагаете сомнительные сайты.
rikert
Вообще то это «Общероссийская база вакансий» и вакансии реальные. А по поводу личностей — согласен, извиняюсь, вы совершенно замечательный человек, который увидев пруфы продолжил отпираться уже от достоверности этой информации, что уж и пруфы то не пруфы. Если бы это было в моей власти, я бы вам принес заявление с синей печатью от Яндекса, как вы и хотели бы, что бы наверняка, но к сожалению это невозможно.
goricvet
можно же текстом писать ссылки, без тэгов
rikert
Да, спасибо, уже разобрался. Я сначала думал они потом появляются после публикования, так как ссылка для анкора есть, но нет не появились. В комментарии ниже вставил текстом.
Abiboss
Когда я вижу такие цены за вакансии для сферы IT, это, извините, уже не «заботливо руками махать», этому есть другое название: «стучаться в днище снизу»
how
Там написано
> Требования к кандидату
> Социально незащищенные категории: Инвалиды
Это, вероятно, их обязывают размещать подобные вакансии по закону, а не для того, чтобы действительно кого-то найти.
rikert
Ссылки получаются только без анкоров, сейчас поправлюсь:
Инженер-Программист за 12000р
https://trudvsem.ru/vacancy/card/1027700229193/cadd5c52-bae5-11e5-bbaf-3bdbd1a6e39d
Программист за 45 000р
https://trudvsem.ru/vacancy/card/1027700229193/e649caf2-8beb-11e6-b497-bf2cfe8c828d
Там же: Яндекс.Такси, Яндекс.Маркет Лаб
https://trudvsem.ru/company/5157746192731
https://trudvsem.ru/company/1167746241222
И другие вакансии от Яндекса непосредственно:
https://trudvsem.ru/company/1027700229193
Yeah
Первая ссылка — от 12к
rikert
И? От — это «от», значит гарантировано 12, остальное вилами по воде писано в том числе и когда. Ой ну прям не ожидал такого лицемерия от хабраюзера. Но конечно в Яндексе придя на вакансию от 12 вы договоритесь уже на стадии профессиональных переговоров на обычную зарплату в 100К. Читаю и плачу.
rikert
А даже и не на обычную, зачем же, сразу договоритесь на 300К, ведь от 12 же, да, от!