История того, как это началось
Это было полночь в пятницу, мои друзья хорошо провели время, и все же я был прибит на экран своего компьютера, набрав.
Как ни странно, я не чувствовал себя оставленным.
Я работал над чем-то, что я думал, что был искренним интересным и потрясающим.
Я был прав из колледжа, и мне нужна была работа. Когда я уехал в Сиэтл, у меня был рюкзак, полный учебников колледжа и какой-то одежды. Я мог бы вменять все, что принадлежит в багажнике моего 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), насколько различные инструменты могут работать вместе, чтобы решить проблему, плюс я получил прохладную маленькую историю, с которой я могу поделиться с друзья.
В некотором смысле, это очень похоже на то, как технологии работают в эти дни. Вы найдете большую волосатую проблему, которую вам нужно решить, и вы не видите никакого немедленного, очевидного решения для этого. Вы сломаете большую волосатую проблему на несколько разных управляемых кусков, а затем вы решаете их один кусок за раз.
Оглядываясь назад, моя проблема была это: Как я могу использовать этот удивительный каталог в Интернете, чтобы быстро добраться до людей с конкретными интересами ? В то время не было известных продуктов или решений, поэтому я сломал его на несколько штук:
- Найти все объявления на платформе
- Собирать контактную информацию о каждом списке
- Отправьте им электронное письмо, если контактная информация существует
Это все, что было к этому. Технология просто действовала как средство до конца Отказ Если бы я мог использовать электронную таблицу 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 для рекламодателей. Команда – найм !