- Оригинальный адрес:How I automated my job search by building a web crawler from scratch
- Оригинальный автор:Zhia Hwa Chong
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:Starrier
- Корректор:liruochen1998
причина
Мои друзья хорошо проводили время на улице в полночь в пятницу, пока я все еще работал за своим компьютером.
Как ни странно, я не чувствовал себя обделенным.
Я делаю то, что считаю действительно интересным и действительно хорошим.
Я только что закончил колледж, поэтому отчаянно нуждаюсь в работе. Когда я уехал из Сиэтла, мой рюкзак был полон учебников и одежды для колледжа. Я могу поместить все свои вещи в багажник моей Honda Civic 2002 года выпуска.
В то время я был не очень общителен, поэтому решил решить проблему с работой наилучшим из известных мне способов. Я пытаюсь создать приложение, которое поможет мне, и эта статья о том, как я этого добился. 😃
Начните с Craigslist
Я в комнате, лихорадочно разрабатываю программное обеспечение, которое поможет мне собирать и отвечать наCraigslistЛюди ищут инженеров-программистов на . Craigslist — это, по сути, интернет-рынок, где вы можете найти товары для продажи, услуги, блоги сообщества и многое другое.
Craigslist
В то время я никогда не создавал полноценного приложения. Большая часть того, что я делал в колледже, было академическим проектом, включая построение и анализ бинарных деревьев, компьютерную графику и модели языковой обработки.
Я "нуб".
Тем не менее, я узнал о популярном языке программирования под названием Python. Я очень мало знаю о Python, но я неустанно пытаюсь узнать об этом.
Поэтому я решил создать небольшое приложение, используя этот новый язык программирования в паре.
Тур по сборке (рабочему) прототипу
у меня есть б/уBenQБлокнот подарил мне мой брат, когда я учился в колледже, и теперь я использую его для развития.
В любом случае это не лучшая среда разработки. Я использую Python 2.4 иSublime textСтарая версия , но процесс написания приложения с нуля — действительно увлекательное занятие.
Я до сих пор не знаю, что делать. Я пробовал все виды вещей, чтобы увидеть то, что мне нужно. Мой первый подход состоял в том, чтобы выяснить, как я могу легко получить доступ к данным Craigslist.
Я искал на Craigslist общедоступный REST API. К сожалению, таких интерфейсов нет.
Однако я нашелеще одна хорошая вещь.
На Craigslist есть одинНовостная лента, Только для личного пользования. RSS-лента — это, по сути,машиночитаемая аннотацияОбновления, отправленные веб-сайтом. В этом случае RSS-канал позволяет мне получать новые списки дел по мере их публикации. Это слишком много для моих нуждидеально.
Пример RSS-канала
Далее мне нужен способ читать RSS-канал. Я не хочу вручную просматривать RSS-каналы, потому что это будет тратой времени, ничем не отличающейся от просмотра Craigslist.
В это время я начал осознавать мощь Google. Есть шутка, что инженеры-программисты большую часть времени ищут ответы в Google. Я думаю, это имеет смысл.
Я погуглил, и я вStackOverflowНашел полезную статью о RSS-каналах Craiglist, в которой описывается, как искать через RSS-канал Craiglist. Это функция фильтрации, которую Craigslist предоставляет бесплатно. Все, что мне нужно сделать, это передать параметр запроса с конкретным ключевым словом, которое меня интересует.
Я сосредоточен на поиске работы, связанной с программным обеспечением, в Сиэтле. Исходя из этого, я набрал конкретный URL-адрес в Сиэтле, чтобы найти информацию, содержащую ключевое слово «программное обеспечение».
Отлично, сработало.очень красивый.
Например, RSS-канал Сиэтла под названием «программное обеспечение».
Красивый суп — один из лучших инструментов, которые я использую
К моему удивлению, мой подход сработал.
Во-первых,Ограничить количество объявлений. Мои данные не включают СиэтлвсеОбъявления о свободных вакансиях. Возвращаемый результат является лишь подмножеством общего результата. Я хочу быть максимально широким, поэтому мне нужно знать список всех доступных вакансий.
Во-вторых, я понял, что RSS-каналыНе содержит никакой контактной информации. Это действительно немного разочаровывает. Я могу найти списки, но не могу связаться с издателями, пока не отфильтрую списки вручную.
Скриншот ссылки для ответа Craigslist
У меня много навыков и много интересов, но монотонная ручная работа не входит в их число. Я мог бы нанять кого-нибудь, чтобы он сделал это для меня, но я едва свожу концы с концами на доллар рамена, так что это означает, что я не могу тратиться на этот дополнительный продукт.
Это тупик, но это не значитЗаканчивать.
Итерировать непрерывно
Из моей первой неудачной попытки я узнал, что у Craigslist есть RSS-канал, и в каждом блоге есть ссылка на настоящий блог.
Отлично, если у меня есть доступ к настоящему блогу, то, может быть, я смогу просканировать его адрес электронной почты? 🧐 Это означает, что мне нужно найти способ получить адрес электронной почты из исходного блога.
На этот раз я все же нашел свой надежный Google, ища «способы парсинга веб-сайта».
В Google я нашел классную маленькую функцию Python под названиемBeautiful Soup. По сути, это отличный инструмент, позволяющий анализировать весьDOM-деревои помочь вам понять структуру веб-страницы.
Мои потребности просты: мне нужен простой в использовании инструмент, который позволит мне собирать данные с веб-страниц. BeautifulSoup проверяет оба флажка вместо того, чтобы тратить больше времени на выборлучший инструмент, я выбрал полезный инструмент и пошел дальше. Вот похожая операциянеобязательный список.
Домашняя страница BeautifulSoup
Совет: я нашел отличныйруководство, в котором описывается, как выполнять парсинг веб-страниц с помощью Python и BeautifulSoup. Если вы заинтересованы в том, чтобы научиться сканировать, то я рекомендую вам прочитать ее.
С помощью этого нового инструмента мой рабочий процесс настроен.
мой рабочий процесс
Теперь я готов к следующей задаче: извлечению адресов электронной почты из настоящего блога.
Теперь, есть классная вещь о технологии с открытым исходным кодом. Они бесплатны и прекрасно работают! Это как есть мороженое бесплатно в жаркий летний день.иКак свежеиспеченное шоколадное печенье.
BeautifulSoup позволяет искать на веб-страницах определенные HTML-теги или маркеры. И Craigslist уже хорошо с ними справляется, так что найти адреса электронной почты очень просто. Тег — это что-то вроде «ссылка для ответа по электронной почте», которая в основном говорит о том, что ссылка на электронную почту доступна.
С тех пор вместе стало легче. Я полагаюсь на встроенную функциональность, предоставляемую BeautifulSoup, и с помощью нескольких простых операций я могу легко получить адрес электронной почты из блога Craigslist.
Создавайте комбинации контента
Менее чем за час я получил свой первый MVP и создал поисковый робот, который собирал адреса электронной почты и отвечал людям, ищущим инженеров-программистов в радиусе 100 миль от Сиэтла.
Скриншот кода
Я добавил различные дополнения к исходному сценарию, чтобы получить лучшие результаты. Например, я сохраняю результаты на страницах CSV и HTML, чтобы их можно было быстрее анализировать.
Конечно, есть много других примечательных особенностей, таких как:
- Возможность записи моего отправляющего адреса электронной почты
- Правила усталости предотвращают особые случаи отправки электронных писем людям, с которыми я уже связался
- Специально, некоторые электронные письма требуют капчи, прежде чем они будут отображаться, чтобы предотвратить ботов (таких как я)
- Craigslist не разрешает краулерам доступ к своим страницам, поэтому, если я буду запускать его слишком часто, меня забанят. (Я пытался переключаться между разными VPN, чтобы «подделать» Craigslist, но это не сработало).
- Я все еще не могу получить CraigslistвсеПочта
Последний - кикер. Но я думаю, что если пост существует какое-то время, постер может не найти его. Это компромисс, но я должен быть в состоянии справиться с этим.
Весь опыт похож наTetris. Я знаю, какова моя конечная цель, и моя настоящая задача состоит в том, чтобы соединить нужные части вместе для достижения конкретной конечной цели. Каждая головоломка уносила меня в разные путешествия. Несмотря на то, что это было сложно, мне это нравилось, и каждый раз я узнавала что-то новое.
уроки выучены
Это был поучительный опыт, в конце концов я узнал немного о том, как работает Интернет (и Craigslist), как различные инструменты работают вместе для решения проблемы, и у меня есть крутая маленькая история, я могу поделиться ею. с друзьями.
В некотором смысле, это похоже на то, как сегодня работают технологии. Вы обнаружили огромную и сложную проблему, которую необходимо решить. И вы не видите немедленного, очевидного решения. Вы разбиваете эту большую сложную проблему на несколько отдельных управляемых частей, а затем решаете каждую часть по очереди.
Оглядываясь назад, я задаюсь вопросом: **Как я могу использовать этот превосходный каталог в Интернете, чтобы быстро связаться с людьми с конкретными интересами? ** В то время не было известного продукта или решения, поэтому я разбил его на части:
- Найти все списки на платформе
- Соберите контактную информацию о каждом объявлении
- Отправьте электронное письмо, если контактная информация доступна
Вот и все.Технологии — это только средство для достижения цели. Если бы я мог использовать электронную таблицу Excel, чтобы сделать это за меня, я бы сделал это. Однако я не гуру Excel, поэтому я выбрал то, что имело для меня наибольший смысл в то время.
возможности для совершенствования
Мне еще многое предстоит улучшить:
- Я начал с языка, с которым не был знаком, так что сначала пришлось учиться. К счастью, это не так уж плохо, потому что Python очень легко освоить. Поэтому я настоятельно рекомендую его любому энтузиасту программного обеспечения использовать его в качестве первого языка.
- Чрезмерная зависимость от технологии с открытым исходным кодом, само программное обеспечение с открытым исходным кодом имеет ряд проблем.Несколько библиотек, которые я использую, больше не находятся в активной разработке, поэтому у меня возникают проблемы на раннем этапе, я не могу импортировать библиотеку или библиотека дает сбой по какой-то, казалось бы, безобидной причине.
- Работа над проектом в одиночку может быть веселой, но может быть и стрессовой.. Вам нужно много мотивации, чтобы получить эти вещи. Этот проект быстрый и простой, но я все же провел несколько выходных, улучшая его. По мере продвижения проекта я начал терять мотивацию, и когда я получил работу, я полностью отказался от проекта.
Ресурсы и инструменты, которые я использую
Автостопом по Python- В целом, это хорошая книга для изучения Python. Я рекомендую Python в качестве первого языка программирования для начинающих.статья, я обсудил, как использовать его, чтобы получить котировки от нескольких ведущих компаний.
BeautifulSoup- Утилита для создания моего поискового робота.
Web Scraping with Python- Практическое руководство по изучению того, как использовать Python для парсинга веб-страниц.
Lean Startup— Из этой книги я почерпнул идею быстрого прототипирования и создания MVP для тестирования. Я думаю, что эта идея применима ко многим различным областям, и она также помогла мне с этим проектом.
Evernote- Я использую Evernote, чтобы организовать свои мысли для этой статьи. Настоятельно рекомендую это - я использую это для того, что я делаюКаждая вещь.
мой ноутбук- Это мой нынешний ноутбук дома, настроенный как рабочая станция. По сравнению со старым ноутбуком BenQ требуетсянамного легче, но оба подходят для общей работы по программированию.
Credits:
Брэндон О'Брайен, мой наставник и друг, вычитал и предоставил ценные отзывы о том, как улучшить эту статью.
Leon Tager, мои коллеги и друзья, ведите меня и вдохновляйте экономической мудростью, в которой я отчаянно нуждаюсь.
Вы можете подписаться на новости отрасли и случайные лакомые кусочки и войти на меняМестоБудьте первыми, кто узнает, когда будет опубликована новая статья.
Чжиа Чонг — инженер-программист в Twitter. Он работает в команде Ad Measurement в Сиэтле, оценивая влияние рекламодателей и рентабельность инвестиций. Команда hiring!
** Вы можете найти его на **Twitter и LinkedIn найти его на.
благодарныйпортфолио с открытым исходным кодом.
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллекти другие поля, если вы хотите видеть больше качественных переводов, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.