شعار proxyscrape داكن

كشط الويب لإعلانات الوظائف الشاغرة - دليل 2024 النهائي

بايثون, كشط, Mar-06-20245 دقائق للقراءة

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

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

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

ما هو البحث عن الوظائف الشاغرة على الويب؟

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

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

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

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

فهم عنوان URL وهيكل الصفحة

أولاً، دعنا نلقي نظرة على نموذج الصفحة التي سنستخرج منها بالفعل

طريقة تنظيم عنوان URL مهمة:

  • لاحظ أن "q=" تبدأ السلسلة الخاصة بحقل "ماذا" في الصفحة، مع فصل مصطلحات البحث بـ "+" (أي البحث عن وظائف "بيانات+عالم")
  • عند تحديد الراتب، فسيتم التحليل بالفواصل في رقم الراتب، فتكون بداية الراتب مسبوقة بـ %24 ثم الرقم قبل الفاصلة الأولى، ثم يتم كسره بـ %2C ثم يكمل بباقي الرقم (أي %2420%2C000 = 20000 دولار)
  • لاحظ أن "&l=" تبدأ السلسلة للمدينة محل الاهتمام، مع فصل مصطلحات البحث بـ "+" إذا كانت المدينة أكثر من كلمة واحدة (على سبيل المثال، "نيويورك+نيويورك").
  • لاحظ أن "&start=" تشير إلى نتيجة البحث حيث تريد أن تبدأ (أي ابدأ بالنظر إلى النتيجة العاشرة)

ستكون بنية عنوان URL هذه مفيدة للغاية بينما نواصل بناء الكاشطة وجمع البيانات من صفحات متعددة. 

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

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

البدء باستخدام المكشطة

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

طلبات الاستيراد 
استيراد bs4
من bs4 استيراد حساء جميل
استيراد بانداس ك pd
استيراد الوقت

سنقوم أولاً باستهداف الصفحة الواحدة لسحب كل معلومة من المعلومات التي نريدها,

عنوان URL = "https://www.indeed.com/jobs?q=data+Sscientist+%2420%2C000&l=New+York&start=10"
#إجراء طلب لعنوان URL المذكور أعلاه:
الصفحة = طلبات.get(URL)
#تحديد التنسيق المطلوب لـ "الصفحة" باستخدام محلل html - وهذا يسمح لـ python بقراءة المكونات المختلفة للصفحة، بدلاً من التعامل معها كسلسلة واحدة طويلة
الحساء = الحساء الجميل(page.text, "html.parser")
# طباعة الحساء بتنسيق شجري أكثر تنظيماً مما يجعل القراءة أسهل
طباعة(soup.prettify()))

استخدام prettify يجعل من السهل الحصول على نظرة عامة على ترميز HTML للصفحة ويوفر مخرجات مثل هذه,

 الآن جميع المعلومات الموجودة في الصفحة التي تهمنا موجودة في "حساء" المتغير. علينا أن نبحث أكثر في الشيفرة لتكرار العلامات والعلامات الفرعية المختلفة لالتقاط المعلومات المطلوبة.

الحصول على العناصر الأساسية للبيانات

خمس نقاط رئيسية لكل إعلان وظيفة هي

المسمى الوظيفي.اسم الشركة.الموقع.الراتب.الملخص الوظيفي.

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

الحصول على المسمى الوظيفي

As can be seen, the entirety of each job posting is under <div> tags, with an attribute “class” = “row result.”

Further, we could also see that job titles are under <a> tags, with the attribute “title = (title)”. One can see the value of the tag’s attribute with tag[“attribute”], so I can use it to find each posting’s job title.

إذا قمنا بالتلخيص، فإن الدالة التي سنراها تتضمن الخطوات الثلاث التالية,

Pulling out all the <div> tags with class including “row”.Identifying <a> tags with attribute “data-tn-element”:”jobTitle”For each of these <a> tags, find attribute values “title”

def extract_job_title_from_result(soup): 
  jobs = []
  for div in soup.find_all(name="div", attrs={"class":"row"}):
    for a in div.find_all(name="a", attrs={"data-tn-element":"jobTitle"}):
      jobs.append(a["title"])
  return(jobs)
extract_job_title_from_result(soup)

سينتج عن هذا الرمز مخرجات كهذه,

الحصول على اسم الشركة

Getting company names can be a bit tricky because most of them are appearing in <span> tags, with “class”:” company”.  They are also housed in <span> tags with “class”:” result-link-source”.

سنستخدم عبارات if/إذا/إلا لاستخراج معلومات الشركة من كل من هذه الأماكن. من أجل إزالة المسافات البيضاء حول أسماء الشركات عند إخراجها، سنستخدم inputting.strip() في النهاية.

def extract_company_from_result(soup): 
 companies = []
 for div in soup.find_all(name="div", attrs={"class":"row"}):
   company = div.find_all(name="span", attrs={"class":"company"})
   if len(company) &gt; 0:
    for b in company:
     companies.append(b.text.strip())
   else:
    sec_try = div.find_all(name="span", attrs={"class":"result-link-source"})
    for span in sec_try:
      companies.append(span.text.strip())
 return(companies)
 
extract_company_from_result(soup)

الحصول على الموقع

Locations are located under the <span> tags. Span tags are sometimes nested within each other, such that the location text may sometimes be within “class”:”location” attributes, or nested in “itemprop”:”addressLocality”. However a simple for loop can examine all span tags for text and retrieve the necessary information.

def extract_location_from_result(soup): 
  locations = []
  spans = soup.findAll('span', attrs={'class': 'location'})
  for span in spans:
    locations.append(span.text)
  return(locations)
extract_location_from_result(soup)

الحصول على الراتب

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

Some salaries are under <nobr> tags, while others are under <div> tags, “class”:”sjcl” and are under separate div tags with no attributes. Try/except statement can be helpful while extracting this information. 

def extract_salary_from_result(soup): 
  salaries = []
  for div in soup.find_all(name="div", attrs={"class":"row"}):
    try:
      salaries.append(div.find('nobr').text)
    except:
      try:
        div_two = div.find(name="div", attrs={"class":"sjcl"})
        div_three = div_two.find("div")
        salaries.append(div_three.text.strip())
      except:
        salaries.append("Nothing_found")
  return(salaries)
extract_salary_from_result(soup)

الحصول على ملخص الوظيفة

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

But let’s first try this using python. Summaries are located under <span> tags. Span tags are nested within each other such that the location text is within “class”:” location” tags or nested in “itemprop”:” adressLocality”. However, using a simple for loop can examine all span tags for text to retrieve the necessary information.

الأسئلة المتداولة

الأسئلة الشائعة:

1. لماذا من الضروري كشط تفاصيل الوظيفة؟
هناك عدد كافٍ من بوابات الوظائف التي يمكنها إخطارك بالوظائف التي تطابق ملفك الشخصي. ومع ذلك، فإن الحصول على حل كشط الوظائف سيوفر لك قائمة كاملة بالوظائف ووصفها كقاعدة بيانات سهلة الاستخدام. سيتيح لك ذلك الحصول على رؤية أفضل لجميع فرص العمل في مكان واحد.
2. كيف يمكن للوكيل المساعدة في كشط تفاصيل الوظيفة؟
عادةً ما سيواجه كشط الويب تحديات معينة مثل حظر بروتوكول الإنترنت، والحظر الجغرافي، والسرعة المحدودة. كما أن كشط الوظائف من بوابات الوظائف سيواجه مثل هذه التحديات. لتجاوز كل هذه المشاكل، يمكن أن تساعدك عناوين البروكسي في الحصول على عناوين IP الخاصة بالموقع المطلوب وضمان إخفاء الهوية
3. ما هي مكتبات بايثون المطلوبة لكشط تفاصيل الوظيفة؟
الطلبات و BeautifulSoup و Pandas هي مكتبات بايثون شائعة جدًا لكشط البيانات المتعلقة بالوظيفة من مواقع الويب. مكتبة الطلبات هي أكثر مكتبات بايثون شيوعًا المستخدمة لإرسال طلبات الويب، بينما تتولى BeautifulSoup مسؤولية تحليل البيانات، وستساعد مكتبة Pandas في عمليات بنية البيانات.

مقالات ذات صلة

كيفية كشط تويتر باستخدام بايثون

كيفية كشط إنستغرام باستخدام بايثون

كيفية كشط رديت باستخدام بايثون

الخاتمة

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

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

إذا كنت تبحث عن خدمات البروكسي، لا تنسى أن تنظر إلى ProxyScrapeالبروكسيات السكنية والمميزة.