Рубрики
Без рубрики

Как я автоматизировал свою работу поиск, создавая веб-гусенику с нуля

Автор оригинала: Zhia Chong.

История того, как это началось

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

Как ни странно, я не чувствовал себя оставленным.

Я работал над чем-то, что я думал, что был искренним интересным и потрясающим.

Я был прав из колледжа, и мне нужна была работа. Когда я уехал в Сиэтл, у меня был рюкзак, полный учебников колледжа и какой-то одежды. Я мог бы вменять все, что принадлежит в багажнике моего 2002 года Honda Civic.

Мне не нравилось общаться с большим количеством, поэтому я решил решить эту проблему на поисках на работу лучшим способом, которым я знал, как. Я пытался построить приложение, чтобы сделать это для меня, и эта статья о том, как я это сделал. ?

Начало работы с Craigslist

Я был в своей комнате, яростно построил некоторое программное обеспечение, которое поможет мне собрать, и отвечать на людей, которые искали инженеров программного обеспечения на Craigslist Отказ Craigslist по сути, по сути, рынок Интернета, где вы можете пойти и найти вещи для продажи, услуги, сообществ, сообществ и так далее.

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

Я был вполне «Newb».

Тем не менее, я всегда слышал об этом новом языке «горячего» программирования, называемого Python. Я не знал много питона, но хотел грязные руки и узнать больше об этом.

Поэтому я поставил два и два вместе и решил построить небольшое приложение, используя этот новый язык программирования.

Путешествие построить (рабочий) прототип

У меня был использован BenQ Ноутбук, мой брат дал мне, когда ушел в колледж, который я использовал для развития.

Это была не лучшая среда разработки любой мерой. Я использовал Python 2.4 и старая версия Возвышенный текст Однако процесс написания приложения с нуля был действительно волным опытом.

Я не знал, что мне нужно сделать еще. Я пробовал разные вещи, чтобы увидеть, что застрял, и мой первый подход должен был узнать, как я мог легко получить доступ к данным Craigslist.

Я посмотрел вверх Craigslist, чтобы узнать, имел ли у них общедоступные API отдыха. К моему смятению, они этого не сделали.

Тем не менее, я нашел Следующая лучшая вещь.

У Крейгслиста был RSS Feed Это было общедоступно для личного пользования. RSS-канал по сути является Компьютерное читаемое сводка обновлений, которые сайт отправляет. В этом случае RSS-канал позволит мне забрать новые списки вакансий, когда они были опубликованы. Это было Идеально для моих нужд.

Далее мне нужен способ прочитать эти RSS-каналы. Я не хотел проходить через RSS-канал вручную, потому что это будет раковина, и это было бы не отлично, чем просмотр Craigslist.

Около на этот раз я начал реализовать силу Google. Существует бегущая шутка, что инженеры программного обеспечения проводят большую часть своего времени погуги за ответами. Я думаю, что есть определенно какой-то правда.

После небольшого погубинка я нашел этот полезный пост на Stackoverflow Это описало, как искать через Craiglist RSS-канал. Это была своего рода функциональность фильтрации, которую Craigslist предоставляется бесплатно. Все, что мне нужно было сделать, это пройти в определенном параметре запросов с ключевым словом, в котором интересует.

Я был сосредоточен на поисках программных работ в Сиэтле. С этим я набрал этот конкретный URL для поиска списков в Сиэтле, который содержал ключевое слово «Программное обеспечение».

И VUILà! Это сработало Красиво Отказ

Самый красивый суп, который я когда-либо пробовал

Я не был убежден, однако, что мой подход будет работать.

Во-первых, Количество списков было ограничено Отказ Мои данные не содержали Все Доступные расходы на вакансии в Сиэтле. Возвращенные результаты были просто подмножеством целого. Я искал как можно более широко чистой, поэтому мне нужно было узнать все доступные списки вакансий.

Во-вторых, я понял, что RSS Feed Не включало какую-либо контактную информацию Отказ Это был облом. Я мог найти списки, но я не мог связаться с плакатами, если только вручную не отфильтруйте эти списки.

Я человек из многих навыков и интересов, но делая повторяющуюся ручную работу не один из них. Я мог бы нанять кого-то, чтобы сделать это для меня, но я едва сохнул с 1-долларной лапшой Рамэна Кубок. Я не мог разобраться на этом боковом проекте.

Это был тупик. Но это не было конец.

Непрерывная итерация

Из моей первой неудачной попытки я узнал, что Craigslist имел RSS-канал, на которую я мог бы фильтровать, и каждая публикация имела ссылку на фактическую публикацию.

Ну, если бы я мог получить доступ к фактической публикации, то, возможно, я мог бы скинуть адрес электронной почты от него? ? Это означало, что мне нужно было найти способ схватить адреса электронной почты из оригинальных проводков.

Еще раз я подтянул доверие Google и искал «пути разбора веб-сайта».

С маленьким гугущим я нашел прохладную маленький инструмент Python под названием Красивый суп Отказ Это по сути, это нефтный инструмент, который позволяет вам разбирать целую Дом дерево И помогает вам понять, как структурирована веб-страница.

Мои потребности были простыми: мне нужен инструмент, который был простым в использовании и позволил бы мне собрать данные из веб-страницы. BeautifulSup проверил с обоих коробок, а вместо того, чтобы тратить больше времени, выбирая Лучший инструмент Я выбрал инструмент, который работал и двигался. Вот a Список альтернатив Что делать что-то подобное.

С помощью этого нового инструмента мой рабочий процесс был все настроен.

Теперь я был готов решить следующую задачу: соскабливание адресов электронной почты от фактических сообщений.

Теперь вот прохладная вещь о технологиях с открытым исходным кодом. Они свободны и отлично работают! Это как получить бесплатное мороженое в жаркий летний день, и свежеиспеченное печенье шоколадно-чипа, чтобы пойти.

CountrySoup позволяет вам искать определенные теги HTML или маркеров на веб-странице. И Craigslist структурировал свои списки таким образом, чтобы он был ветером, чтобы найти адреса электронной почты. Тег была чем-то вдоль линий «Email-Reply-Link», которая в основном указывает на то, что доступна ссылка электронной почты.

С тех пор все было легко. Я полагался на встроенную функциональность Beautifulsoup, предоставляемую, и только с некоторыми простыми манипуляциями, я мог довольно легко выбрать адреса электронной почты от Craigslist Posts.

Положить вещи вместе

В течение часа или около того, у меня был первый MVP. Я построил веб-скребок, который мог бы собрать адреса электронной почты и отвечать на людей, ищущих программные инженеры в пределах 100-мильного радиуса Сиэтла.

Я добавил различные дополнения в верхней части оригинального скрипта, чтобы сделать жизнь намного проще. Например, я сохранил результаты в CSV и HTML страницу, чтобы я мог бы быстро разбирать их.

Конечно, было много других заметных особенностей, таких как:

  • Возможность регистрации адресов электронной почты, которую я отправил
  • Усталость правил, чтобы предотвратить пересекать электронные письма людям, которые я уже добрался до
  • Особые случаи, такие как некоторые электронные письма, требующие капча до того, как они отображаются, чтобы определить автоматические боты (которые я был)
  • Craigslist не разрешил скребки на своей платформе, поэтому я бы забанил, если я проберусь скриптом слишком часто. (Я пытался переключиться между различными VPN, чтобы попытаться «обмануть» Craigslist, но это не сработало), а
  • Я до сих пор не мог получить Все Публикация на Craigslist

Последний был кикером. Но я подумал, если пост накапливался некоторое время, то, возможно, человек, который писал, его даже не смотрел. Это было компромисс, с которым я был в порядке.

Весь опыт чувствовал себя как игра Тетрис Отказ Я знал, какова была моя цель, и моя реальная задача поднимала правильные части вместе, чтобы достичь этой конкретной цели. Каждый кусок головоломки привел меня в другое путешествие. Это было сложно, но приятное, тем не менее, и я узнал что-то новое каждый шаг пути.

Уроки выучены

Это был опыт открытия глаз, и я закончил изучить немного больше о том, как работает Интернет (и Craigslist), насколько различные инструменты могут работать вместе, чтобы решить проблему, плюс я получил прохладную маленькую историю, с которой я могу поделиться с друзья.

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

Оглядываясь назад, моя проблема была это: Как я могу использовать этот удивительный каталог в Интернете, чтобы быстро добраться до людей с конкретными интересами ? В то время не было известных продуктов или решений, поэтому я сломал его на несколько штук:

  1. Найти все объявления на платформе
  2. Собирать контактную информацию о каждом списке
  3. Отправьте им электронное письмо, если контактная информация существует

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

Зоны улучшения

Там было много областей, в которых я мог улучшить:

  • Я выбрал язык, с которым я не был очень знаком, чтобы начать, и в начале была кривая обучения. Это было не слишком ужасно, потому что Python очень легко забрать. Я настоятельно рекомендую, чтобы любой начальный энтузиаст программного обеспечения использовать это как первый язык.
  • Слишком сильно полагаться на технологии с открытым исходным кодом. Программное обеспечение с открытым исходным кодом имеет свой собственный набор проблем, тоже. Были несколько библиотек, которые я использовал, которые больше не были в активном развитии, поэтому я раннему вопросам в начале. Я не мог импортировать библиотеку, или библиотека потерпит неудачу за кажущие воображения.
  • Решение проекта самостоятельно может быть веселым, но также может вызвать много стресса Отказ Тебе нужна много импульса для отправки чего-либо. Этот проект был быстрым и легким, но оно забрал мне несколько выходных, чтобы добавить в улучшении. Поскольку проект продолжил, я начал терять мотивацию и импульс. После того, как я нашел работу, я полностью бросил проект.

Ресурсы и инструменты, которые я использовал

Руководство автостока к Python – Отличная книга для обучения Python в целом. Я рекомендую Python в качестве первого языка программирования новичка, и я говорю о том, как я использовал его на предложения по земле из нескольких лучших компаний Top-Tier в своей статье здесь Отказ

DailyCodingProblem : Это услуга, которая отправляет ежедневные проблемы кодирования в вашу электронную почту и имеет некоторые из самых последних проблем программирования от Tech Tech Companies. Используйте мой код купона, Zhiachong, чтобы получить 10 долларов!

Beautifulsoup – Nifty Utility Tool, который я использовал для создания моего веб-гусеника

Веб соскоб с Python – Полезное руководство по изучению того, как Web Scraping с Python работает.

Постный запуск – Я узнал о быстром прототипировании и создании MVP для проверки идеи этой книги. Я думаю, что идеи здесь применимы во многих различных областях, а также помогли мне пройти проект.

Evernote – Я использовал Evernote, чтобы собрать мои мысли вместе для этого поста. Очень рекомендую это – я использую это для в основном _ все, что я делаю.

Мой ноутбук – Это мой текущий ноутбук на дому, настроен как рабочая станция. Это много, намного проще Работать с чем старым ноутбуком BenQ, но оба будут работать только для общего программирования.

Кредиты:

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

Леон Tager Мой сотрудник и друг, которые корректируют и дают мне с большой необходимой финансовой мудростью.

Вы можете подписаться на новости отрасли, случайные Tidbits и быть первым, кто знает, когда я публикую новые статьи, подписавшись здесь Отказ

Жия Чонг является инженером программного обеспечения в Twitter. Он работает на команде измерения объявлений в Сиэтле, измеряя воздействие на рекламу и ROI для рекламодателей. Команда – найм !

Вы можете найти его на Twitter и LinkedIn Отказ