كيف أتمتة بحثي عن الوظائف عن طريق بناء زاحف ويب من البداية

قصة كيف بدأت

كان منتصف ليل يوم الجمعة ، وكان أصدقائي في الخارج يقضون وقتًا ممتعًا ، ومع ذلك تم تسميتي على شاشة الكمبيوتر الخاص بي أثناء الكتابة.

الغريب ، لم أشعر بالإهمال.

كنت أعمل على شيء اعتقدت أنه ممتع حقًا ورائع.

كنت خارج الكلية مباشرة ، وكنت بحاجة إلى وظيفة. عندما غادرت إلى سياتل ، كانت لدي حقيبة ظهر مليئة بالكتب المدرسية وبعض الملابس. يمكنني وضع كل ما أمتلكه في صندوق سيارتي هوندا سيفيك 2002.

لم أكن أحب الاختلاط كثيرًا في ذلك الوقت ، لذلك قررت معالجة مشكلة البحث عن العمل هذه بأفضل طريقة عرفتها. حاولت إنشاء تطبيق للقيام بذلك نيابة عني ، وهذه المقالة تدور حول كيفية القيام بذلك. ؟

الشروع في العمل مع Craigslist

كنت في غرفتي ، وأبني بشراسة بعض البرامج التي من شأنها أن تساعدني في جمع والاستجابة للأشخاص الذين كانوا يبحثون عن مهندسي برمجيات في Craigslist. Craigslist هو في الأساس سوق الإنترنت ، حيث يمكنك الذهاب والعثور على أشياء للبيع والخدمات والمنشورات المجتمعية وما إلى ذلك.

في ذلك الوقت ، لم أقم مطلقًا ببناء تطبيق كامل. كانت معظم الأشياء التي عملت عليها في الكلية عبارة عن مشاريع أكاديمية تضمنت بناء وتحليل الأشجار الثنائية ورسومات الكمبيوتر ونماذج معالجة اللغة البسيطة.

كنت "مبتدئًا" تمامًا.

ومع ذلك ، فقد سمعت دائمًا عن لغة البرمجة "الساخنة" الجديدة هذه والتي تسمى Python. لم أكن أعرف الكثير من لغة بايثون ، لكنني أردت أن أتسخ يدي وأن أتعلم المزيد عنها.

لذا جمعت اثنين واثنين معًا ، وقررت إنشاء تطبيق صغير باستخدام لغة البرمجة الجديدة هذه.

رحلة بناء نموذج أولي (عامل)

كان لدي جهاز كمبيوتر محمول مستعمل من بينكيو أعطاني إياه أخي عندما غادرت إلى الكلية استخدمته للتطوير.

لم تكن أفضل بيئة تطوير بأي مقياس. كنت أستخدم Python 2.4 وإصدارًا قديمًا من Sublime text ، ومع ذلك كانت عملية كتابة تطبيق من الصفر تجربة مبهجة حقًا.

لم أكن أعرف ما الذي يجب أن أفعله بعد. كنت أحاول تجربة أشياء مختلفة لمعرفة ما هو عالق ، وكان أسلوبي الأول هو معرفة كيف يمكنني الوصول إلى بيانات Craigslist بسهولة.

لقد بحثت عن Craigslist لمعرفة ما إذا كان لديهم واجهة برمجة تطبيقات REST متاحة للجمهور. لخيبي ، لم يفعلوا.

ومع ذلك ، وجدت ثاني أفضل شيء.

كان لدى Craigslist موجز RSS متاح للجمهور للاستخدام الشخصي. موجز RSS هو في الأساس ملخص يمكن قراءته بواسطة الكمبيوتر للتحديثات التي يرسلها موقع الويب. في هذه الحالة ، سيسمح لي موجز RSS باختيار قوائم وظائف جديدة كلما تم نشرها. كان هذا مثاليا لاحتياجاتي.

بعد ذلك ، كنت بحاجة إلى طريقة لقراءة موجز ويب لـ RSS. لم أكن أرغب في تصفح موجز ويب RSS يدويًا بنفسي ، لأن ذلك سيكون مضيعة للوقت ولن يكون مختلفًا عن تصفح Craigslist.

في هذا الوقت تقريبًا ، بدأت أدرك قوة Google. هناك نكتة مستمرة مفادها أن مهندسي البرمجيات يقضون معظم وقتهم في البحث على Google للحصول على إجابات. أعتقد أن هناك بالتأكيد بعض الحقيقة في ذلك.

بعد قليل من البحث في Googling ، وجدت هذا المنشور المفيد على StackOverflow الذي يصف كيفية البحث من خلال موجز RSS لـ Craiglist. لقد كانت نوعًا من وظيفة التصفية التي قدمها Craigslist مجانًا. كل ما كان علي فعله هو تمرير معامل استعلام محدد بالكلمة الأساسية التي كنت مهتمًا بها.

كنت أركز على البحث عن وظائف متعلقة بالبرمجيات في سياتل. مع ذلك ، قمت بكتابة عنوان URL المحدد هذا للبحث عن قوائم في سياتل تحتوي على الكلمة الرئيسية "برنامج".

//seattle.craigslist.org/search/sss؟format=rss&query=software

وفويلا! عملت بشكل جميل .

أجمل شوربة تذوقتها على الإطلاق

ومع ذلك ، لم أكن مقتنعًا بأن مقاربتي ستنجح.

أولاً ، كان عدد القوائم محدودًا . لم تحتوي بياناتي على جميع الوظائف الشاغرة المتاحة في سياتل. النتائج التي تم إرجاعها كانت مجرد مجموعة فرعية من الكل. كنت أتطلع إلى إنشاء أكبر شبكة ممكنة ، لذلك كنت بحاجة إلى معرفة جميع قوائم الوظائف المتاحة.

ثانيًا ، أدركت أن موجز RSS لا يتضمن أي معلومات اتصال . كان ذلك مشكلة. تمكنت من العثور على القوائم ، لكن لم أتمكن من الاتصال بالملصقات إلا إذا قمت بالتصفية يدويًا من خلال هذه القوائم.

أنا شخص لدي العديد من المهارات والاهتمامات ، لكن القيام بالأعمال اليدوية المتكررة ليس من بينها. كان بإمكاني التعاقد مع شخص ما للقيام بذلك من أجلي ، لكنني بالكاد كنت أتخلص من كوب نودلز كوب رامين. لم أستطع التفاخر في هذا المشروع الجانبي.

كان ذلك طريق مسدود. لكنه لم يكن في النهاية.

التكرار المستمر

من محاولتي الأولى الفاشلة ، علمت أن Craigslist لديه موجز RSS يمكنني تصفيته ، وكان لكل منشور رابط إلى النشر الفعلي نفسه.

حسنًا ، إذا كان بإمكاني الوصول إلى النشر الفعلي ، فربما يمكنني حذف عنوان البريد الإلكتروني منه؟ ؟ هذا يعني أنني بحاجة إلى إيجاد طريقة للحصول على عناوين البريد الإلكتروني من المنشورات الأصلية.

مرة أخرى ، قمت بسحب موقع Google الموثوق به ، وبحثت عن "طرق لتحليل موقع ويب".

مع القليل من Googling ، وجدت أداة Python صغيرة رائعة تسمى Beautiful Soup. إنها في الأساس أداة أنيقة تسمح لك بتحليل شجرة DOM بأكملها وتساعدك على فهم كيفية تنظيم صفحة الويب.

كانت احتياجاتي بسيطة: كنت بحاجة إلى أداة سهلة الاستخدام وتسمح لي بجمع البيانات من صفحة ويب. قامت BeautifulSoup بإلغاء تحديد المربعين ، وبدلاً من قضاء المزيد من الوقت في اختيار أفضل أداة ، اخترت الأداة التي نجحت واستمر في العمل. فيما يلي قائمة بالبدائل التي تقوم بشيء مماثل.

ملاحظة جانبية: لقد وجدت هذا البرنامج التعليمي الرائع الذي يتحدث عن كيفية كشط مواقع الويب باستخدام Python و BeautifulSoup. إذا كنت مهتمًا بتعلم كيفية الكشط ، فإنني أوصي بقراءته.

باستخدام هذه الأداة الجديدة ، تم تعيين سير العمل الخاص بي بالكامل.

كنت الآن جاهزًا لمعالجة المهمة التالية: كشط عناوين البريد الإلكتروني من المنشورات الفعلية.

الآن ، هذا هو الشيء الرائع حول تقنيات المصادر المفتوحة. إنها مجانية وتعمل بشكل رائع! انها مثل الحصول مجانا الآيس كريم في يوم صيفي حار، و والمخبوزات الشوكولاته رقاقة الكوكيز للذهاب.

يتيح لك موقع BeautifulSoup البحث عن علامات أو علامات HTML معينة على صفحة ويب. وقد صمم كريغزلست قوائمهم بطريقة تجعل العثور على عناوين البريد الإلكتروني أمرًا سهلاً. كانت العلامة شيئًا على غرار "رابط رد البريد الإلكتروني" ، والذي يشير بشكل أساسي إلى توفر رابط بريد إلكتروني.

منذ ذلك الحين ، كان كل شيء سهلاً. لقد اعتمدت على الوظيفة المضمنة التي قدمتها BeautifulSoup ، ومع بعض التلاعب البسيط ، تمكنت من اختيار عناوين البريد الإلكتروني من منشورات Craigslist بسهولة تامة.

وضع الأشياء معًا

في غضون ساعة أو نحو ذلك ، حصلت على أول أفضل قيمة لي. لقد قمت ببناء مكشطة ويب يمكنها جمع عناوين البريد الإلكتروني والرد على الأشخاص الذين يبحثون عن مهندسي برمجيات ضمن دائرة نصف قطرها 100 ميل من سياتل.

لقد أضفت العديد من الوظائف الإضافية أعلى النص الأصلي لجعل الحياة أسهل بكثير. على سبيل المثال ، قمت بحفظ النتائج في صفحة CSV و HTML بحيث يمكنني تحليلها بسرعة.

بالطبع ، كان هناك العديد من الميزات البارزة الأخرى التي تفتقر إليها ، مثل:

  • القدرة على تسجيل عناوين البريد الإلكتروني التي أرسلتها
  • قواعد التعب لمنع الإفراط في إرسال رسائل البريد الإلكتروني إلى الأشخاص الذين اتصلت بهم بالفعل
  • حالات خاصة ، مثل بعض رسائل البريد الإلكتروني التي تتطلب Captcha قبل عرضها لردع الروبوتات الآلية (التي كنت أفعلها)
  • لم يسمح Craigslist بأدوات الكشط على نظامهم الأساسي ، لذلك سيتم حظري إذا قمت بتشغيل البرنامج النصي كثيرًا. (حاولت التبديل بين شبكات VPN مختلفة لمحاولة "خداع" Craigslist ، لكن ذلك لم ينجح) ،
  • ما زلت لا أستطيع استرداد جميع المنشورات على Craigslist

آخر واحد كان كيكر. لكنني أدركت ما إذا كان المنشور ما زال جالسًا لفترة من الوقت ، فربما لم يعد الشخص الذي نشره يبحث بعد الآن. لقد كانت مقايضة كنت موافقًا عليها.

شعرت التجربة برمتها وكأنها لعبة تتريس. كنت أعرف ما هو هدفي النهائي ، وكان التحدي الحقيقي بالنسبة لي هو تركيب القطع الصحيحة معًا لتحقيق هذا الهدف النهائي المحدد. كل قطعة من اللغز أوصلتني في رحلة مختلفة. لقد كان تحديًا ، ولكنه ممتع رغم ذلك وتعلمت شيئًا جديدًا في كل خطوة على الطريق.

الدروس المستفادة

لقد كانت تجربة رائعة ، وانتهى بي الأمر بتعلم المزيد قليلاً حول كيفية عمل الإنترنت (و Craigslist) ، وكيف يمكن للأدوات المختلفة أن تعمل معًا لحل مشكلة ما ، بالإضافة إلى أنني حصلت على قصة صغيرة رائعة يمكنني مشاركتها معها اصحاب.

بطريقة ما ، هذا يشبه إلى حد كبير كيفية عمل التقنيات هذه الأيام. تجد مشكلة كبيرة مشعرة تحتاج إلى حل ، ولا ترى أي حل فوري وواضح لها. تقوم بتقسيم مشكلة الشعر الكبيرة إلى أجزاء متعددة يمكن التحكم فيها ، ثم تحلها قطعة واحدة في كل مرة.

بالنظر إلى الوراء ، كانت مشكلتي هي: كيف يمكنني استخدام هذا الدليل الرائع على الإنترنت للوصول إلى الأشخاص ذوي الاهتمامات المحددة بسرعة ؟ لم تكن هناك منتجات أو حلول معروفة متاحة لي في ذلك الوقت ، لذلك قسمتها إلى عدة أجزاء:

  1. ابحث عن جميع القوائم على المنصة
  2. جمع معلومات الاتصال حول كل قائمة
  3. أرسل بريدًا إلكترونيًا إليهم إذا كانت معلومات الاتصال موجودة

هذا كل ما في الأمر. كانت التكنولوجيا مجرد وسيلة لتحقيق الغاية . إذا كان بإمكاني استخدام جدول بيانات Excel للقيام بذلك من أجلي ، كنت سأختار ذلك بدلاً من ذلك. ومع ذلك ، فأنا لست خبيرًا في برنامج Excel ، ولذا فقد اتبعت النهج الأكثر منطقية بالنسبة لي في ذلك الوقت.

مناطق التحسين

كان هناك العديد من المجالات التي يمكنني تحسينها:

  • اخترت لغة لم أكن على دراية بها في البداية ، وكان هناك منحنى تعليمي في البداية. لم يكن الأمر فظيعًا للغاية ، لأنه من السهل جدًا تعلم بايثون. أوصي بشدة أن يستخدم أي متحمس للبرامج المبتدئين ذلك كلغة أولى.
  • الاعتماد بشكل كبير على تقنيات المصادر المفتوحة. البرامج مفتوحة المصدر لديها مجموعة من المشاكل الخاصة بها أيضًا. كان هناك العديد من المكتبات التي استخدمتها والتي لم تعد قيد التطوير النشط ، لذلك واجهت مشكلات في وقت مبكر. لم أستطع استيراد مكتبة ، أو ستفشل المكتبة لأسباب تبدو غير ضارة.
  • يمكن أن يكون التعامل مع مشروع ما بنفسك أمرًا ممتعًا ، ولكنه قد يسبب أيضًا الكثير من التوتر . ستحتاج إلى الكثير من الزخم لشحن شيء ما. كان هذا المشروع سريعًا وسهلاً ، لكن الأمر استغرق مني بضعة عطلات نهاية الأسبوع لإضافة التحسينات. مع استمرار المشروع ، بدأت أفقد الحافز والزخم. بعد أن وجدت وظيفة ، تخلت عن المشروع تمامًا.

الموارد والأدوات التي استخدمتها

دليل Hitchhiker إلى Python - كتاب رائع لتعلم Python بشكل عام. أوصي باستخدام Python كلغة برمجة أولى للمبتدئين ، وأتحدث عن كيفية استخدامها للحصول على عروض من العديد من أفضل الشركات في مقالتي هنا.

DailyCodingProblem: إنها خدمة ترسل مشكلات الترميز اليومية إلى بريدك الإلكتروني ، ولديها بعض من أحدث مشكلات البرمجة من شركات التكنولوجيا عالية المستوى. استخدم رمز القسيمة الخاص بي ، zhiachong ، للحصول على خصم 10 دولارات!

BeautifulSoup - الأداة المساعدة الأنيقة التي استخدمتها لبناء زاحف الويب الخاص بي

تجريف الويب باستخدام Python - دليل مفيد لتعلم كيفية عمل تجريف الويب باستخدام Python.

Lean Startup - تعلمت عن النماذج الأولية السريعة وإنشاء MVP لاختبار فكرة من هذا الكتاب. أعتقد أن الأفكار الواردة هنا قابلة للتطبيق في العديد من المجالات المختلفة وساعدت أيضًا في دفعني لإكمال المشروع.

Evernote - لقد استخدمت Evernote لتجميع أفكاري معًا لهذا المنشور. أوصي به بشدة - أستخدمه في الأساس في كل شيء أفعله.

جهاز الكمبيوتر المحمول الخاص بي - هذا هو جهاز الكمبيوتر المحمول الحالي في المنزل ، وقد تم إعداده كمحطة عمل. إنه أسهل بكثير في العمل مع جهاز كمبيوتر محمول قديم من BenQ ، لكن كلاهما سيعمل فقط في أعمال البرمجة العامة.

الاعتمادات:

براندون أوبراين ، مرشدي وصديقي العزيز ، لتدقيق القراءة وتقديم ملاحظات قيمة حول كيفية تحسين هذه المقالة.

ليون تاغر ، زميلي في العمل وصديقي الذي يدقق لي ويدفعني بالحكمة المالية التي تشتد الحاجة إليها

يمكنك الاشتراك في أخبار الصناعة والحكايات العشوائية وتكون أول من يعلم عندما أنشر مقالات جديدة من خلال الاشتراك هنا.

زهيا تشونغ مهندس برمجيات في تويتر. يعمل في فريق قياس الإعلانات في سياتل ، حيث يقيس تأثير الإعلانات وعائد الاستثمار للمعلنين. الفريق يقوم بالتوظيف !

يمكنك العثور عليه على Twitter و LinkedIn .