Belal Elsayed نشر 4 سبتمبر 2022 أرسل تقرير نشر 4 سبتمبر 2022 from typing import Text import requests from bs4 import BeautifulSoup import csv from itertools import zip_longest jobs = [] company = [] location = [] skills = [] links = [] salary = [] result = requests.get("https://wuzzuf.net/search/jobs/?q=python&a=navbl") source = result.content print(source) soup = BeautifulSoup(source , "lxml") # >> lxml print (soup) job_title = soup.find_all("h2" ,{"class" : "css-m604qf"} ) company_name= soup.find_all("a" , {"class" :"css-17s97q8"}) company_location = soup.find_all("span" , {"class":"css-5wys0k"}) Job_skills = soup.find_all("div" , {"class":"css-y4udm8" }) for i in range(len(job_title)): jobs.append(job_title[i].text) links.append(job_title[i].find("a").attrs['href']) company.append(company_name[i].text) location.append(company_location[i].text) skills.append(Job_skills[i].text) for link in links: result = requests.get(link) source = result.content soup = BeautifulSoup(source, "lxml") salaries = soup.find("span" , {"class":"css-4xky9y"}) print(salaries.text) salary.append(salaries.text) print(jobs , company ,location , skills ) file_list = [jobs , company , location , skills , links , salary] exported = zip_longest(*file_list) :with open("C:/Users/KIMOSTORE/Documents/wzfny.csv", "w") as myfile wr = csv.writer(myfile) wr.writerow(["jobs" , "company" , "location" , "skills" , "links" , "salary"]) wr.writerows(exported) سؤالي هنا : انا وقفت عند خطوه ازاي اجيب الsalary من داخل صفحه الوظيفه 1 اقتباس
0 Haroun Taha نشر 4 سبتمبر 2022 أرسل تقرير نشر 4 سبتمبر 2022 يجب عليك أن تجلب رابط صفحة من <a> لكل job ومن ثم تجلب صفحة الjob وتأخذ منها الSalary وهذه العملية تحصل داخل حلقة الfor هكذا تجلب الرابط : for item in items: item = item.find('a', class_="css-o171kl") page_job = item['href'] response = requests.get(page_job) soup_page = BeautifulSoup(response.content,"html.parser") بعد ذلك داخل الصفحة من soup_page تجلب الsalary هذه الفكرة بكل بساطة. 2 اقتباس
0 Belal Elsayed نشر 9 سبتمبر 2022 الكاتب أرسل تقرير نشر 9 سبتمبر 2022 بتاريخ On 9/4/2022 at 23:11 قال Haroun Taha: لسه المشكله متحلتش انا عملت زي ما حضرتك قلتلي :for link in links link = link.find('span', class_="css-4xky9y") page_job = link['href'] response = requests.get("https://wuzzuf.net/jobs/p/4yZylKxIEYZb-Senior-Python-Django-Developer-RDI-Giza-Egypt?o=1&l=sp&t=sj&a=python|search-v3|navbl&s=26283954") soup_page = BeautifulSoup(response.content,"html.parser") ظهرلي كدا في الterminal item = item.find('span', class_="css-4xky9y") TypeError: find() takes no keyword arguments اقتباس
0 Haroun Taha نشر 9 سبتمبر 2022 أرسل تقرير نشر 9 سبتمبر 2022 بتاريخ 7 دقائق مضت قال Belal Elsayed: :for link in links link = link.find('span', class_="css-4xky9y") page_job = link['href'] response = requests.get("https://wuzzuf.net/jobs/p/4yZylKxIEYZb-Senior-Python-Django-Developer-RDI-Giza-Egypt?o=1&l=sp&t=sj&a=python|search-v3|navbl&s=26283954") soup_page = BeautifulSoup(response.content,"html.parser") ظهرلي كدا في الterminal item = item.find('span', class_="css-4xky9y") TypeError: find() takes no keyword arguments لماذا span ؟ ضع العنصر a كما وضعت أنا راجع إجابتي في الأعلى بشكل جيد ومن العنصر a سوف نجلب الhref ونبعت به الطلب 2 اقتباس
0 Belal Elsayed نشر 9 سبتمبر 2022 الكاتب أرسل تقرير نشر 9 سبتمبر 2022 انا وضعت span لان الsalary بياخذ لينك تاج span ليس a فانا اخترته علي هذا الاساس اقتباس
0 محمد النجار10 نشر 19 مارس 2023 أرسل تقرير نشر 19 مارس 2023 انا عندي نفس المشكلة برضه انا بجيب ال Page بتاعت كل وظيفة ولكن عشان اجيب ال data بتاعتها سواء مرتب أو requirements مفيش اي حاجة بتظهر #loop to extract needed info for i in range(len(job_titles)): job_title.append(job_titles[i].text) links.append("https://wuzzuf.net"+job_titles[i].find("a").attrs['href']) company_name.append(company_names[i].text) location_name.append(location_names[i].text) job_skill.append(job_skills[i].text) for link in links: result = requests.get(link) src = result.content soup = BeautifulSoup(src,"html.parser") salaries = soup.find_all("div", {"class": "css-rcl8e5"}).find("span", {"class": "css-4xky9y"}) salary.append(salaries) req_section = soup.find('div', {'class': 'css-1t5f0fr'}) respond_text = "" for li in req_section.find_all("li"): respond_text += li.text + " | " job_req.append(respond_text) اقتباس
0 Mustafa Suleiman نشر 20 مارس 2023 أرسل تقرير نشر 20 مارس 2023 بتاريخ 1 ساعة قال محمد النجار10: انا عندي نفس المشكلة برضه انا بجيب ال Page بتاعت كل وظيفة ولكن عشان اجيب ال data بتاعتها سواء مرتب أو requirements مفيش اي حاجة بتظهر #loop to extract needed info for i in range(len(job_titles)): job_title.append(job_titles[i].text) links.append("https://wuzzuf.net"+job_titles[i].find("a").attrs['href']) company_name.append(company_names[i].text) location_name.append(location_names[i].text) job_skill.append(job_skills[i].text) for link in links: result = requests.get(link) src = result.content soup = BeautifulSoup(src,"html.parser") salaries = soup.find_all("div", {"class": "css-rcl8e5"}).find("span", {"class": "css-4xky9y"}) salary.append(salaries) req_section = soup.find('div', {'class': 'css-1t5f0fr'}) respond_text = "" for li in req_section.find_all("li"): respond_text += li.text + " | " job_req.append(respond_text) يجب العثور على عنصر HTML الذي يحتوي على المعلومات المطلوبة واستخراجها باستخدام BeautifulSoup. حيث يمكن القيام بذلك باستخدام الكلاس الخاص بعنصر HTML الذي يحتوي على المعلومات المطلوبة. وباستطاعتك استخدام ميثود find_all للبحث عن جميع العناصر التي تحتوي على الكلاس المحدد ثم الوصول لنص الراتب باستخدام text attribute. ويمكن تحديد الكلاس المحتوي على الراتب عن طريق فحص مصدر الصفحة والعثور على العنصر الذي يحتوي على الراتب، أو بإمكانك استخدام ميثود البحث المتقدم select للعثور على العنصر المحتوي على الراتب عن طريق تحديد مسار CSS المطلوب. في النهاية، يجب أن يكون لديك شيء ما مثل هذا الكود: for link in links: result = requests.get(link) src = result.content soup = BeautifulSoup(src,"html.parser") salary_element = soup.select_one("div.css-rcl8e5 > span.css-4xky9y") salary.append(salary_element.text if salary_element else None) والكود يستخدم select_one للبحث عن العنصر الذي يحتوي على الراتب باستخدام المسار CSS المحدد ثم يستخرج النص الموجود داخل العنصر. في حال عدم العثور على العنصر، سيتم إضافة None إلى قائمة الرواتب. اقتباس
السؤال
Belal Elsayed
from typing import Text import requests from bs4 import BeautifulSoup import csv from itertools import zip_longest jobs = [] company = [] location = [] skills = [] links = [] salary = [] result = requests.get("https://wuzzuf.net/search/jobs/?q=python&a=navbl") source = result.content print(source) soup = BeautifulSoup(source , "lxml") # >> lxml print (soup) job_title = soup.find_all("h2" ,{"class" : "css-m604qf"} ) company_name= soup.find_all("a" , {"class" :"css-17s97q8"}) company_location = soup.find_all("span" , {"class":"css-5wys0k"}) Job_skills = soup.find_all("div" , {"class":"css-y4udm8" }) for i in range(len(job_title)): jobs.append(job_title[i].text) links.append(job_title[i].find("a").attrs['href']) company.append(company_name[i].text) location.append(company_location[i].text) skills.append(Job_skills[i].text) for link in links: result = requests.get(link) source = result.content soup = BeautifulSoup(source, "lxml") salaries = soup.find("span" , {"class":"css-4xky9y"}) print(salaries.text) salary.append(salaries.text) print(jobs , company ,location , skills ) file_list = [jobs , company , location , skills , links , salary] exported = zip_longest(*file_list) :with open("C:/Users/KIMOSTORE/Documents/wzfny.csv", "w") as myfile wr = csv.writer(myfile) wr.writerow(["jobs" , "company" , "location" , "skills" , "links" , "salary"]) wr.writerows(exported)
سؤالي هنا :
انا وقفت عند خطوه ازاي اجيب الsalary من داخل صفحه الوظيفه
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.