-
المساهمات
1068 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
43
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Ali Haidar Ahmad
-
يمكنك حفظ ملفات تعريف الارتباط الحالية ككائن Python باستخدام pickle. من خلال استخدام الدالة get_cookies بالشكل التالي: # استيراد الوحدات اللازمة import selenium.webdriver import pickle # driver تعريف كائن driver = selenium.webdriver.Firefox() # الحصول على صفحة الويب driver.get("URL") # حفظها pickle.dump( driver.get_cookies() , open("cookies.pkl","wb")) ################################## وبعد ذلك لإضافتهم مرة أخرى ################################### # فتح الملف cookies = pickle.load(open("cookies.pkl", "rb")) for cookie in cookies: # المرور عليهم واحداً تلو الآخر driver.add_cookie(cookie) # إضافتهم
-
لاستدعاء متصفح Firefox بدون رأس، يمكنك استخدام الخاصية headless من خلال الكلاس Options، بالشكل التالي: # استيراد الوحدات from selenium import webdriver from selenium.webdriver.firefox.options import Options # Options إنشاء كائن options = Options() # headless تفعيل الخاصية options.headless = True # webdriver.Firefox في باني options نمررها إلى الوسيط driver = webdriver.Firefox(options=options, executable_path=r'geckodriver.exe') // أكمل الكود الخاص بك
-
توفر لك Selenium الكلاس Select للتعامل مع بنى select -> option ويمكنك استخدامها لتحقيق ماتحتاجه بالشكل التالي: # استيراد الوحدات اللازمة from selenium.webdriver.support.ui import Select from selenium import webdriver # driver تعريف كائن driver = webdriver.Firefox() driver.get('Enter your url address') # إيجاد العنصر المطلوب من خلال المعرف الخاص به select = Select(driver.find_element_by_id('A')) # الآن يمكنك اختيار العنصر الذي تريده من خلال القيمة select.select_by_value('2') # أو من خلال النص select.select_by_visible_text('ARG')
-
هناك خطأ في المسار PATH، بإمكانك الاستغناء عن الطريقة القديمة لإعداد chromedriver (تنزيل الملف الثنائي وتكوين المسار يدوياً كما فعلت)، يمكنك الآن القيام بذلك تلقائياً باستخدام webdriver-manager وبالتالي تجنب هذا المشاكل التي قد تحدث بسبب خطأ في تحديد المسار: pip install webdriver-manager الآن سيعمل الكود الخاص بك ببساطة مع التغيير البسيط التالي: from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) أو كحل بديل، يمكنك استخدام مسار مباشر إلى chromedriver كالتالي: driver = webdriver.Chrome('/path/to/chromedriver') وبالتالي في حالتك يكون: driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
-
يمكنك القيام بذلك من خلال الدالة find_element_by_xpath، بالشكل التالي: driver.find_element_by_xpath(“//tag [contains( text(), ‘word’)]”) حيث أن: 1. tag: اسم الوسم المطلوب. 2. word: تعني النص الذي يجب العثور عليه في سلسلة معينة. لا نحتاج إلى كتابة جملة كاملة نريد أن نجدها ، ولكن يمكننا كتابة بضع كلمات فريدة في صفحة الويب. وبالتالي في مثالك، فإنه بمجرد إنشاء driver، يمكنك التقاط العنصر باستخدام: ele = driver.find_element_by_xpath (“//button[contains( text( ), ‘Hsoub Mostql’)]”) وبشكل عام يمكنك اتباع الخطوات التالية لتنفيذ ما تريده عند التعامل مع أي صفحة ويب: # webdriver استيراد ال from selenium import webdriver # webdriver إنشاء كائن driver = webdriver.Chrome( executable_path="#path where you have installed webdriver") # نمرر المسار الذي يوجد فيه الملف التنفذي للويب درايفر على جهازك # الحصول على صفحة الويب المطلوبة driver.get("#Enter the website URL") # URL نمرر عنوان # الحصول على العنصر من خلال النص driver.find_element_by_xpath(“//#tag name which contains word [contains( text(), ‘#word to be found in a particular string’)]”)
-
نعم يمكنك، حيث يحتوي كل WebDriver على الدالة: save_screenshot(filename) أو من خلال الدالة: get_screenshot_as_file(filename) على سبيل المثال في فايرفوكس نقوم بالتالي: from selenium import webdriver bs = webdriver.Firefox() bs.get('http://www.google.com/') bs.save_screenshot('screen.jpg') - أيضاً لو كنت تستخدم جافا يمكنك القيام بذلك كالتالي: WebDriver driver = new FirefoxDriver(); driver.get("http://www.google.com/"); File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); //الآن يمكنك أن تفعل كل ما تريد القيام به معها ، على سبيل المثال نسخ في مكان ما FileUtils.copyFile(scrFile, new File("d:\\folder\\screen.png"));
-
بالتأكيد يمكننا الحصول على كل كود HTML لعنصر الويب باستخدام الكود التالي: # الوصول إلى العنصر المطلوب element = driver.find_element_by_xpath('//*') # innerHTML الحصول على المحتويات من خلال خاصية element = element.get_attribute('innerHTML') """ للحصول على المحتويات مع العنصر الحالي أيضاً نستخدم الخاصية outerHTML """ وإذا أردت حفظه في ملف: with open('c:/html_source_code.html', 'w') as f: f.write(source_code.encode('utf-8'))
-
1. تثبيت سيلينيوم.: أيّاً كان نظامك الحاسوبي، اتبع الخطوات التالية.. - افتح Terminal / Cmd واكتب الأمر كما هو مكتوب أدناه: python -m pip install selenium بدلاً من ذلك، يمكنك تنزيل الحزمة من PyPI، ثم إلغاء أرشفتها ، وتشغيل الأمر أدناه: python setup.py install 2. تثبيت ال Webdrivers: لاستخدام متصفح Firefox ، تحتاج إلى تثبيت GeckoDriver لذا تابع معي.. في حالة أنظمة Linux: - انتقل إلى صفحة إصدارات geckodriver . ابحث عن أحدث إصدار من برنامج التشغيل لمنصتك وقم بتنزيله. على سبيل المثال: wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz - استخرج الملف باستخدام: tar -xvzf geckodriver* - اجعله قابل للتنفيذ: chmod +x geckodriver - انقل الملفات إلى usr / local / bin: sudo mv geckodriver /usr/local/bin/ في حالة الويندوز: - نفس الخطوة الأولى في لينوكس. - استخرجه باستخدام برنامج WinRar أو أي تطبيق قد يكون لديك. - قم بإضافته إلى المسار باستخدام موجه الأوامر. setx path "%path%;GeckoDriver Path" مثال: setx path "%path%;c:/user/eliote/Desktop/geckodriver-v0.26.0-win64/geckodriver.exe"
-
يمكن النظر إلى الخصائص على أنها قاموس، على سبيل المثال لدينا {'value':'C'}. ولإضافة قيمة إلى القاموس فقط نستخدم الصيغة: dict[key] = value وبالتالي اعتماداً على هذا المبدأ يكون لدينا: from bs4 import BeautifulSoup soup = BeautifulSoup('<option value="C">Syria </option>') soup.find('option')['selected'] = '' print(soup) # <html><body><option selected="" value="C">Syria </option></body></html>
-
تابع في الكود التالي: #استيراد الوحدة from bs4 import BeautifulSoup # html كود htmlDoc = """<div class="badges"> <span> <span title="9 gold badges"><span class="badge1"></span><span class="badgecount">9</span></span> <span title="38 silver badges"><span class="badge2"></span><span class="badgecount">38</span></span> <span title="56 bronze badges"><span class="badge3"></span><span class="badgecount">56</span></span> </span> </div>""" # تحليله soup = BeautifulSoup(htmlDoc,'lxml') # ومن خلاله نستخدم body نقوم بالوصول إلى الوسم soup الآن من خلال كائن # badges ذو الكلاس div للإمساك بال find الدالة b = soup.body.find('div', attrs={'class': 'badges'}) # الموجودة ضمنه span الآن من خلاله نقوم بإيجاد كل ال spans=b.span.find_all('span', recursive=False) # الآن نقوم بالمرور عليها واحداً تلو الآخر for span in spans : # ضمنها والذي يحوي على المطلوب title طباعة محتوى ال print (span.attrs['title']) """ 9 gold badges 38 silver badges 56 bronze badges """
-
نظرًا لأنك تعمل باستخدام بيانات UTF-8 ، فأنت بحاجة إلى تعيين السلسلة كسلسلة Unicode أي فقط هكذا: html=u""" <table cellspacing="0" cellpadding="3" border="0" id="ctl00_SPWebPartManager1_g_c001c0d9_0cb8_4b0f_b75a_7cc3b6f7d790_ctl00_HistoryData1_gridHistoryData_DataGrid1" style="width:100%;border-collapse:collapse;"> <tr class="gridHeader" valign="top"> <td class="titleGridRegNoB" align="center" valign="top"><span dir=RTL>ballov</span></td> <td class="titleGridReg" align="center" valign="top">Grand</td> <td class="titleGridReg" align="center" valign="top">andera</td> <td class="titleGridReg" align="center" valign="top">colofisiaky</td> <td class="titleGridReg" align="center" valign="top">tochy</td><td class="titleGridReg" align="center" valign="top"><span dir="rtl"> (laesd)</span></td> <td class="titleGridReg" align="center" valign="top">שער נעילה מתואם</td><td class="titleGridReg" align="center" valign="top">kagt</td> </tr> <tr onmouseover="this.style.backgroundColor='#FDF1D7'" onmouseout="this.style.backgroundColor='#ffffff'"> """ أيضاً للبحث عن الجدول بالمعرّف المحدد نكتب اسم الوسم ثم اتبعه بالمعرفّ كما يلي: table = soup.find('table', id="HistoryData1") وبالنسبة للأسطر فقط استدعي الدالة findall من كائن table وحدد لها الوسم tr rows = table.findAll('tr') وبالنسبة للترميز، حاول فك ترميزها من utf-8 ، وأعد ترميزها، كما يلي: html = br.response().read().decode('utf-8') soup = BeautifulSoup(html.encode('utf-8'))
-
يجب تحديد القيمة True ل selected ليتم استثناءها عن باقي العناصر: from bs4 import BeautifulSoup htmlD=""" <select> <option value="0">1999/9/5</option> <option value="1">2010/9/5</option> <option value="2">2017/9/5</option> <option value="3" selected>2020/9/5</option> </select> """ soup = BeautifulSoup(htmlD,'html') soup.find_all('option', {'selected': True}) # [<option selected="" value="3">2020/9/5</option>] ######################## # lxml في حال كنت تستخدم from lxml import etree root = etree.HTML(htmlD) root.xpath('//option[@selected]') # [<Element option at 0x7f3661bf5b40>]
-
أضف إلى ماسبق أن كيراس و باي تورش عبارة عن مكتبات متكاملة عالية المستوى، أي يمكنك الاعتماد على إحداها في بناء أي نوع من الشبكات العصبية (إلا في بعض الحالات النادرة والتي قد تصادفها عند بناء شبكات عصبية معقدة). كما تجدر الملاحظة إلى أن هذه المكتبات تستخدم لبناء شبكات عصبية وبالتالي لاستخدام خوارزميات التعلم الآلي الأخرى يمكنك استخدام مكتبة Sklearn التي تحتوي الكثير من خوارزميات التعلم مثل شجرة القرارات Random forest.
-
يمكنك استخدام الدالة get_text للقيما بما تحتاجه كما يلي: # استيراد الوحدات اللازمة from bs4 import BeautifulSoup,SoupStrainer htmlD=""" <div class="A"> <p><strong></strong>Text is available under the Creative Commons Attribution-ShareAlike License </p> <p>Consectetuer adipiscing elit. <a href="http://wiki.com/" target="_blank" class="K">Some Link</a> Aenean commodo ligula eget dolor. Aenean massa</p> <p>Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p> </div> """ # BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال soup = BeautifulSoup(htmlD, "lxml") print(soup.get_text('\n')) """ Text is available under the Creative Commons Attribution-ShareAlike License Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa """ أو من عنوان url كما يلي: # استيراد الوحدات اللازمة from bs4 import BeautifulSoup,SoupStrainer import requests # تحديد العنوان الهدف url="https://en.wikipedia.org/wiki/Nike,_Inc." # لكي لايتم اعتبارنا بريد عشوائي وبالتالي تجنب الحظر user agent وإضافة Header تعريف HEADERS = ({'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36\ (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36', 'Accept-Language': 'en-US, en;q=0.5'}) # GET ارسال طلب request = requests.get(url, headers= HEADERS) # استخراج المحتويات htmldata=request.content # BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال soup = BeautifulSoup(htmldata, "lxml") print(soup.get_text())
-
نستخدم الوسيط parse_only والوحدة SoupStrainer والتي من خلالها نحدد أي جزء يجب استخراجه. كما يلي: # استيراد الوحدات اللازمة from bs4 import BeautifulSoup import requests # تحديد العنوان الهدف url="https://en.wikipedia.org/wiki/Nike,_Inc." # لكي لايتم اعتبارنا بريد عشوائي وبالتالي تجنب الحظر user agent وإضافة Header تعريف HEADERS = ({'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36\ (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36', 'Accept-Language': 'en-US, en;q=0.5'}) # GET ارسال طلب request = requests.get(url, headers= HEADERS) الآن نستخدم الوسيط parse_only في باني bs4 ونمرر له كائن SoupStrainer لتصفية الأجزاء التي نحتاجها فقط من الموقع. لاحظ أن الشرطة السفلية بعد class لن تكون موجودة في حالة تصفية العناصر بناءً على معرفاتهم (IDs). في هذه الحالة، نريد فقط تحليل العناصر التي لها الصنف "mw-headline". # استيراد الوحدات اللازمة from bs4 import BeautifulSoup,SoupStrainer import requests # تحديد العنوان الهدف url="https://en.wikipedia.org/wiki/Nike,_Inc." # لكي لايتم اعتبارنا بريد عشوائي وبالتالي تجنب الحظر user agent وإضافة Header تعريف HEADERS = ({'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36\ (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36', 'Accept-Language': 'en-US, en;q=0.5'}) # GET ارسال طلب request = requests.get(url, headers= HEADERS) # استخراج المحتويات htmldata=request.content # BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال soup = BeautifulSoup(htmldata, "lxml", parse_only = SoupStrainer( 'span', class_ = 'mw-headline')) print(soup.prettify()) الخرج: """ <!DOCTYPE html> <span class="mw-headline" id="Origins_and_history"> Origins and history </span> <span class="mw-headline" id="Acquisitions"> Acquisitions </span> <span class="mw-headline" id="Finance"> Finance </span> <span class="mw-headline" id="Logo_evolution"> Logo evolution </span> <span class="mw-headline" id="Products"> Products </span> <span class="mw-headline" id="Sports_apparel"> Sports apparel </span> <span class="mw-headline" id="Street_fashions"> Street fashions </span> <span class="mw-headline" id="Collectibles"> Collectibles </span> <span class="mw-headline" id="Headquarters"> .. .. .. """
-
نستخدم ما يسمى ال Pretty-Printing أي الطباعة المُجملة، من خلال الدالة prettify، التي تقوم بطباعة الصفحة كما هي، كالتالي: # استيراد الوحدات اللازمة from bs4 import BeautifulSoup import requests # تحديد العنوان الهدف Web_url ="https://de.wikipedia.org/wiki/Lionel_Messi" # GET ارسال طلب request = requests.get(Web_url) # استخراج المحتويات htmldata=request.text # BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال soup = BeautifulSoup(htmldata, 'html.parser') # طباعتها print(soup.prettify()) الخرج سيكون بالشكل التالي: <!DOCTYPE html> <html class="client-nojs" dir="ltr" lang="de"> <head> <meta charset="utf-8"/> <title> Lionel Messi – Wikipedia </title> .. .. .. ..
-
يمكنك الحصول على كل وسوم script من خلال الدالة findAll ثم معالجة كل واحدة بشكل منفصل من خلال حلقة تقوم بالمرور عليهم. ولاختبار وجود سمة معينة ضمن الوسم (مهما كان نوعه) نستخدم الدالة has_attr. وبالتالي يكون الحل الذي تحتاجه بالشكل التالي: # استيراد الوحدات اللازمة from bs4 import BeautifulSoup import requests # تحديد العنوان الهدف url="https://de.wikipedia.org/wiki/Lionel_Messi" # GET ارسال طلب request = requests.get(url) # استخراج المحتويات htmldata=request.text # BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال soup = BeautifulSoup(htmldata, 'html.parser') # script استخراج كل وسوم scripts = soup.findAll('script') for script in scripts: # اختبار فيما إذا كانت السمة المحددة موجودة if script.has_attr('your_attribute'): # تنفيذ ماتحتاجه من تعليمات في حال وجودها do_something()
-
يمكنك القيام بذلك من خلال إيجاد الإمساك بالوسم li ثم الحصول على الوسوم الأبناء a من خلال الدالة findChildren كما يلي: # استيراد الوحدات اللازمة from bs4 import BeautifulSoup html="""<div> <li class="c"> <a>linkA</a> <ul> <li> <a>linkB</a> </li> </ul> </li> </div> """ # BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال soup = BeautifulSoup(html, 'html.parser') # c ذو الكلاس li إيجاد الوسم li = soup.find('li', {'class': 'c'}) # الأبناء a لإيجاد الوسوم # findChildren نستخدم الدالة children = li.findChildren("a" , recursive=True) # الآن نقوم بطباعتهم for child in children: print(child) """ <a>linkA</a> <a>linkB</a> """
-
يلعب ترميز الأحرف دوراً رئيسياً في تفسير محتوى مستند HTML و XML. لا يحتوي المستند على أحرف إنجليزية فحسب ، بل يحتوي أيضاً على أحرف غير إنجليزية مثل العبرية واللاتينية واليونانية وغير ذلك الكثير. للسماح للمحلل بمعرفة طريقة التشفير التي يجب استخدامها ، ستحتوي المستندات على علامة وسمات مخصصة لتحديد ذلك. تكتشف وحدة bs4 تلقائياً طريقة التشفير المستخدمة في المستندات وتحولها إلى تنسيق مناسب بكفاءة. ومع ذلك ، في بعض الأحيان يتنبأ بطريقة غير صحيحة بطريقة التشفير، وهذا تماماً مايحدث في حالتك. لذا لحل المشكلة يمكنك استخدام الوسيط from_encoding الذي يخبر الوحدة النمطية bs4 بشكل صريح ، ما هي طريقة التشفير التي يجب استخدامها. هذا يوفر الوقت ويتجنب التحليل غير الصحيح بسبب سوء التوقع. from bs4 import BeautifulSoup import urllib.request url="'https://en.wikipedia.org/wiki/NIFTY_50'" req = urllib.request.urlopen(url) soup = BeautifulSoup(req.read(), 'html.parser',from_encoding="utf-8") print(soup)
-
يمكنك اتباع الخطوات التالية: # استيراد الوحدات اللازمة from bs4 import BeautifulSoup import requests # تحديد العنوان المطلوب url="https://de.wikipedia.org/wiki/Lionel_Messi" # GET إرسال طلب request = requests.get(url) # html استخلاص محتوى htmldata=request.text # BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال soup = BeautifulSoup(htmldata, 'html.parser') # src لكي نوجد جميع وسوم img نقوم بإيجاد الوسم # img تقوم بإيجاد كل وسوم find_all الدالة for item in soup.find_all('img'): print(item['src']) /* //upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Disambig-dark.svg/25px-Disambig-dark.svg.png //upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Lionel_Messi_20180626.jpg/175px-Lionel_Messi_20180626.jpg //upload.wikimedia.org/wikipedia/commons/thumb/2/26/Leo_messi_barce_2005.jpg/220px-Leo_messi_barce_2005.jpg //upload.wikimedia.org/wikipedia/commons/thumb/3/32/Lionel_Messi_goal_19abr2007.jpg/220px-Lionel_Messi_goal_19abr2007.jpg //upload.wikimedia.org/wikipedia/commons/thumb/a/a5/039_men_at_work_UEFA_2009%2C_Rome.jpg/220px-039_men_at_work_UEFA_2009%2C_Rome.jpg //upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Lionel_Messi_Player_of_the_Year_2011.jpg/170px-Lionel_Messi_Player_of_the_Year_2011.jpg //upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Messi_with_Neymar_Junior_the_Future_of_Brazil.jpg/220px-Messi_with_Neymar_Junior_the_Future_of_Brazil.jpg //upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Leo_Messi_v_Granada_2014.jpg/220px-Leo_Messi_v_Granada_2014.jpg //upload.wikimedia.org/wikipedia/commons/thumb/5/55/Messi_olympics-soccer-7.jpg/220px-Messi_olympics-soccer-7.jpg //upload.wikimedia.org/wikipedia/commons/thumb/7/71/Messi_Podolski_Di_Maria_2010.jpg/220px-Messi_Podolski_Di_Maria_2010.jpg //upload.wikimedia.org/wikipedia/commons/thumb/6/62/Lionel_Messi_%E2%80%93_Portugal_vs._Argentina%2C_9th_February_2011.jpg/220px-Lionel_Messi_%E2%80%93_Portugal_vs._Argentina%2C_9th_February_2011.jpg //upload.wikimedia.org/wikipedia/commons/thumb/4/47/Sergio_Ag%C3%BCero_%28L%29%2C_Lionel_Messi_%28R%29_-_Switzerland_vs._Argentina%2C_29th_February_2012.jpg/220px-Sergio_Ag%C3%BCero_%28L%29%2C_Lionel_Messi_%28R%29_-_Switzerland_vs._Argentina%2C_29th_February_2012.jpg //upload.wikimedia.org/wikipedia/commons/thumb/8/87/Messi_in_Germany_and_Argentina_face_off_in_the_final_of_the_World_Cup_2014_-2014-07-13_%2824%29.jpg/170px-Messi_in_Germany_and_Argentina_face_off_in_the_final_of_the_World_Cup_2014_-2014-07-13_%2824%29.jpg //upload.wikimedia.org/wikipedia/commons/thumb/7/7c/ECUADOR_VS_ARGENTINA_%2837576941726%29.jpg/220px-ECUADOR_VS_ARGENTINA_%2837576941726%29.jpg //upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Lionel_Andr%C3%A9s_Messi_Cuccittini.jpg/220px-Lionel_Andr%C3%A9s_Messi_Cuccittini.jpg //upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Messi_vs_Nigeria_2018.jpg/220px-Messi_vs_Nigeria_2018.jpg //upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/12px-Commons-logo.svg.png //upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Bal%C3%B3n_de_oro.png/50px-Bal%C3%B3n_de_oro.png //upload.wikimedia.org/wikipedia/commons/thumb/a/aa/FIFA_logo_without_slogan.svg/70px-FIFA_logo_without_slogan.svg.png //upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Coppa_Campioni.svg/50px-Coppa_Campioni.svg.png //upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Bota_de_oro.svg/60px-Bota_de_oro.svg.png //de.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1 /static/images/footer/wikimedia-button.png /static/images/footer/poweredby_mediawiki_88x31.png */
-
يمكنك استخدام إحدى الدوال التالية: decompose : يقوم بإزالة الوسم من شجرة مستند HTML المحدد، ثم يدمرها تماماً مع محتوياتها. clear: تقوم بحذف الوسم من شجرة مستند HTML المحدد. # استيراد المكتبة from bs4 import BeautifulSoup # المستند المراد تعديدله htmlDoc =""" <!DOCTYPE> <html> <head><title>html</title></head> <body> <div id="x"> <p> This is child of div with id = "x". <span>Child of "P"</span> </p> <div> Another Child of div with id = "x". </div> </div> <p> aaadas </p> </body> </html> """ # BeautifulSoup تحليل الملف من خلال soup = BeautifulSoup(htmlDoc, 'html.parser') # إيجاد الوسم e = soup.find('div') # حذف العنصر الفرعي e.decompose() print(e) # <None></None> في حال استخدام clear: soup = BeautifulSoup(htmlDoc, 'html.parser') # إيجاد الوسم e = soup.find('div') # حذف العنصر الفرعي e.clear() print(e) # <div id="x"></div>
-
يمكنك القيام بضلك من خلال الحصول على الصفحة المطلوبة من خلال تنفيذ طلب get. ثم استخراج محتوى الصفحة، ثم تحليلها من خلال مكتبة bs4 وإجراء ماتحتاجه من تعديلات، ثم لحفظها نقوم بحفظ كائن soup في ملف من خلال تعيين الترميز على UTF-8. وسنستخدم الدالة prettify التي تجعل محتوى الصفحة أكثر سهولة للقراءة. ثم نقوم بتحويل كائن soup إلى سلسلة ونخزنه ضمن الملف بصيغة html. كما في الكود التالي: # استيراد المكتبات from bs4 import BeautifulSoup import requests # تحديد العنوان الهدف URL = 'link' # تنفيذ طلب الحصول على الصفحة page = requests.get(URL) # استحراج محتوى الصفحة text = page.content # BeautifulSoup تحليل النص الذي تم الحصول عليه من خلال soup = BeautifulSoup(text, "html.parser") # w فتح ملف مع تحديد وضع الكتابة # UTF-8 ضبط الترميز على with open("output.html", "w", encoding = 'utf-8') as file: # لتجميل المحتوى prettify سنقوم باستخدام الدالة # بعد ذلك نحولها إلى سلسلة ونكتبها في الملف file.write(str(soup.prettify()))