تريد المساعدة؟ إليك خياراتك:","كرانش بيس","نبذة عنا","شكراً للجميع على الدعم الرائع!","روابط سريعة","برنامج الإحالة","بريميوم","ProxyScrape تجربة متميزة","مدقق الوكلاء عبر الإنترنت","أنواع الوكلاء","الدول الوكيلة","حالات استخدام الوكيل","مهم","سياسة ملفات تعريف الارتباط","إخلاء المسؤولية","سياسة الخصوصية","الشروط والأحكام","وسائل التواصل الاجتماعي","فيسبوك","لينكد إن","تويتر","كورا","برقية","الخلاف","\n © حقوق الطبع والنشر © 2024 - ثيب بي في | بروغسترات 18 | 2812 ميكلين | بلجيكا | ضريبة القيمة المضافة BE 0749 716 760\n"]}
يعد البحث عن الوظائف الشاغرة على الويب اختصارًا بديلًا للباحثين عن عمل لإنشاء قاعدة بيانات للوظائف الشاغرة الحالية. تقول شركة Randstad أن متوسط البحث عن وظيفة قد يستمر من خمسة إلى ستة أشهر، من وقت تقديم الطلب حتى شغل الوظيفة. ماذا لو كان لديك حل يمكن أن يقلل من عبء البحث عن وظيفة
يعد البحث عن الوظائف الشاغرة على الويب اختصارًا بديلًا للباحثين عن عمل لإنشاء قاعدة بيانات للوظائف الشاغرة الحالية. تقول شركة Randstad أن متوسط البحث عن وظيفة قد يستغرق من خمسة إلى ستة أشهر، من وقت تقديم الطلب حتى شغل الوظيفة. ماذا لو كان لديك حل يمكن أن يخفف عنك عبء تصفح جميع بوابات الوظائف واختيار ما يناسبك منها؟
ستأخذك هذه المقالة في رحلة تشرح لك كيفية القيام بكشط الويب لإعلانات الوظائف الشاغرة. إذاً، أنت في سوق العمل وتحاول العثور على أفضل وظيفة. لكنك تريد أن تلعب بذكاء أكثر وليس بجهد أكبر. لماذا لا تنشئ مكشطة ويب لجمع وتحليل إعلانات الوظائف الشاغرة لك. بمجرد أن تقوم بتعيينه، سوف يزودك بثروات البيانات في شكل مرتب وجميل، حتى لا تضطر إلى التحقق منها يدويًا مرارًا وتكرارًا. دعنا نبدأ.
إن كشط الويب لإعلانات الوظائف الشاغرة هو الحل الذي يجمع البيانات تلقائيًا من بوابات الوظائف المتعددة ويقلل من وقتك في جلب البيانات من كل موقع إلكتروني. إن وجود مثل هذه الأداة التي يمكن أن تزودك بقاعدة بيانات كاملة للوظائف الشاغرة سيبسط مهمتك بأضعاف مضاعفة. كل ما عليك فعله هو تصفية الوظائف التي تناسبك ومتابعة عملية تقديم الطلبات.
إذاً، أنت في سوق العمل وتحاول العثور على أفضل وظيفة. ولكنك تريد أن تلعب بذكاء أكثر وليس بجهد أكبر. لمَ لا تنشئ مكشطة ويب لجمع وتحليل إعلانات الوظائف الشاغرة لك؟ بمجرد أن تقوم بإعداده، سوف يزودك بثروات من البيانات بتنسيق مرتب وجميل، حتى لا تضطر إلى التحقق منها يدويًا مرارًا وتكرارًا. دعنا نبدأ.
[تنويه! يمكن للعديد من المواقع الإلكترونية تقييد استخراج البيانات من صفحاتها. قد يتعرّض المستخدمون لمشكلات قانونية بناءً على مكان وكيفية محاولة استخراج المعلومات. لذلك على المرء أن يكون حذرًا للغاية عند البحث في المواقع التي تضم بياناته. على سبيل المثال، فيسبوك، لينكد إن، وكريغليست، تمانع أحيانًا إذا تم كشط البيانات من صفحاتها. لذا إذا كنت تريد الكشط، اكشط على مسؤوليتك الخاصة].
ستكون هذه مقالة أساسية للغاية سنرى فيها أساسيات كشط الويب من خلال استخراج بعض المعلومات المفيدة المتعلقة بالوظائف المتعلقة بـ "علوم البيانات" من موقع "في الواقع". سنقوم بكتابة برنامج مذهل يقوم بتحديث الوظائف عدة مرات يدويًا. بعض المكتبات المفيدة التي ستكون مفيدة جدًا أثناء إنشاء هذه الكاشطة هي "الطلبات" و "BeautifulSoup".
أولاً، دعنا نلقي نظرة على نموذج الصفحة التي سنستخرج منها بالفعل.
طريقة تنظيم عنوان URL مهمة:
ستكون بنية عنوان 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) > 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.
مقالات ذات صلة
كيفية كشط تويتر باستخدام بايثون
كيفية كشط إنستغرام باستخدام بايثون
كيفية كشط رديت باستخدام بايثون
في هذه المقالة، رأينا ما هو كشط الويب وكيف يمكن أن يكون مفيدًا في حياتنا اليومية من خلال أخذ مثال عملي لكشط بيانات الوظائف من صفحات الويب الخاصة بـ Indeed. يُرجى ملاحظة أن النتائج التي تحصل عليها قد تكون مختلفة عن هذه النتائج لأن الصفحات ديناميكية، لذا فإن المعلومات تتغير باستمرار مع مرور الوقت.
يعد كشط الويب أسلوبًا رائعًا إذا تم إجراؤه بشكل صحيح ووفقًا لمتطلباتك. لقد رأينا كذلك الجوانب الخمسة المهمة لكل إعلان وظيفة وكيفية استخراجها. عند تجربة هذا الرمز بنفسك، ستحصل على بيانات كشط إعلانات الوظائف، ولن تحتاج إلى البحث عن الوظائف يدوياً، وهو أمر مذهل. يمكن أيضًا تطبيق نفس التقنية على صفحات الويب الأخرى، ولكن قد تختلف بنيتها. لذلك يحتاج المرء إلى تحسين الكود الخاص به وفقًا لذلك. لكن جميع الأساسيات مغطاة في هذه المقالة، لذلك لن تكون هناك أي صعوبة في كشط الصفحات الأخرى أيضًا.
إذا كنت تبحث عن خدمات البروكسي، لا تنسى أن تنظر إلى ProxyScrapeالبروكسيات السكنية والمميزة.