الفرق بين المراجعتين ل"Python/urllib/parse/urlparse"

من موسوعة حسوب
< Python‏ | urllib‏ | parse
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>urllib.parse.urlparse()‎‎</code> في بايثون}}</noinclude> تحلّل الدالة عنوان URL إلى ستّة...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:الدالة <code>urllib.parse.urlparse()‎‎</code> في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:الدالة <code>urllib.parse.urlparse()‎‎</code> في بايثون}}</noinclude>
  
تحلّل الدالة عنوان URL إلى ستّة مكونات، وتعيد صفًّا يتضمّن 6 عناصر. تمثّل هذه المكونات البنية الرئيسية لعنوان URL وهي: scheme://netloc/path;parameters?query#fragment. يكون كل عنصر في الصفّ سلسلة نصية، وقد يكون فارغًا كذلك.
+
تحلّل الدالة عنوان URL إلى ستّة مكونات، وتعيد صفًّا يتضمّن 6 عناصر. تمثّل هذه المكونات البنية الرئيسية لعنوان URL وهي: <code>scheme://netloc/path;parameters?query#fragment</code>. يكون كل عنصر في الصفّ سلسلة نصية، وقد يكون فارغًا كذلك.
  
لا تقسّم المكوّنات إلى أجزاء أصغر (على سبيل المثال، يكون موقع الشبكة سلسلة نصية مفردة) ولا يجري توسعة علامات التهريب %، ولا تكون الفواصل جزءًا من النتيجة المعادة، باستثناء الخط المائل الأمامي في مكوّن المسار، والتي تعاد مع النتائج إن كانت موجودة.  
+
لا تقسّم المكوّنات إلى أجزاء أصغر (على سبيل المثال، يكون موقع الشبكة سلسلة نصية مفردة) ولا يجري توسعة علامات التهريب <code>%</code>، ولا تكون الفواصل جزءًا من النتيجة المعادة، باستثناء الخط المائل الأمامي في مكوّن المسار، والتي تعاد مع النتائج إن كانت موجودة.  
  
 
== البنية العامة ==
 
== البنية العامة ==
سطر 10: سطر 10:
 
urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)
 
urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)
 
</syntaxhighlight>
 
</syntaxhighlight>
 
== المعاملات ==
 
‎scheme
 
يعطي المعامل scheme القيمة الافتراضية لنظام العنونة adressing scheme والذي يُستخدم في حال لم يحدّد عنوان URL قيمة لهذه المكون. يجب أن يكون نوع القيمة مشابهًا لقيمة المعامل urlstring (نص أو بايتات) باستثناء أنّه يُسمح باستخدام القيمة الافتراضية '' دائمًا وتحوّل إلى القيمة b''‎ إن كان ذلك مناسبًا.
 
  
allow_fragments
+
== ‎المعاملات ==
إن أخذ هذا المعامل قيمة خاطئة، فلن تتعرّف الدالة حينئذٍ على محدّدات القطع fragment identifiers، وتحلّل كجزء من مكونات المسار أو المعاملات أو الاستعلام، وتعين سلسلة نصية فارغة كقيمة للقطع في القيمة التي تعيدها الدالة.
 
  
== القيمة المعادة ==
+
=== <code>‎scheme</code> ===
القيمة المعادة نسخة من صنفٍ متفرّع من الصفوف tuples، ويمتلك هذا الصنف خصائص إضافية مساعدة تمتاز بكونها للقراءة فقط:
+
يعطي المعامل scheme القيمة الافتراضية لنظام العنونة adressing scheme والذي يُستخدم في حال لم يحدّد عنوان URL قيمة لهذه المكون. يجب أن يكون نوع القيمة مشابهًا لقيمة المعامل <code>urlstring</code> (نص أو بايتات) باستثناء أنّه يُسمح باستخدام القيمة الافتراضية دائمًا وتحوّل إلى القيمة <code>b</code>‎ إن كان ذلك مناسبًا.
  
 +
=== <code>allow_fragments</code> ===
 +
إن أخذ هذا المعامل قيمة خاطئة، فلن تتعرّف الدالة حينئذٍ على محدّدات القطع fragment identifiers، وتحلّل كجزء من مكونات المسار أو المعاملات أو الاستعلام، وتعين [[Python/str|سلسلة نصية]] فارغة كقيمة للقطع في القيمة التي تعيدها الدالة.
  
 +
== القيمة المعادة ==
 +
القيمة المعادة نسخة من صنفٍ متفرّع من الصفوف <code>[[Python/tuples|tuples]]</code>، ويمتلك هذا الصنف خصائص إضافية مساعدة تمتاز بكونها للقراءة فقط:
  
تؤدي قراءة خاصية port إلى إطلاق الاستثناء ValueError إن عُيِّن منفذ غير صالح في عنوان URL. راجع قسم (نتائج تحليل منظّمة) للاطلاع على المزيد من المعلومات حول الكائن المعاد.
+
تؤدي قراءة خاصية <code>port</code> إلى إطلاق الاستثناء <code>ValueError</code> إن عُيِّن منفذ غير صالح في عنوان URL. راجع قسم (نتائج تحليل منظّمة) للاطلاع على المزيد من المعلومات حول الكائن المعاد.
  
تُطلق الأقواس المربّعة غير المتطابقة في خاصية netloc الاستثناء ValueError.
+
تُطلق الأقواس المربّعة غير المتطابقة في خاصية <code>netloc</code> الاستثناء <code>ValueError</code>.
  
 
'''ملاحظات:'''
 
'''ملاحظات:'''
  
 
* أضيفت إمكانية تحليل عناوين IPv6 URL في الإصدار 3.2 من بايثون.
 
* أضيفت إمكانية تحليل عناوين IPv6 URL في الإصدار 3.2 من بايثون.
* تحلّل القطعة في الإصدار 3.3 من بايثون لجميع مخطّطات URL (إلا إذا أخذ المعامل allow_fragment قيمة خاطئة) وهذا مطابق للمعيار RFC 3986. في الإصدارات السابقة كانت هناك قائمة بيضاء من المخطّطات التي تدعم القطع.
+
* تحلّل القطعة في الإصدار 3.3 من بايثون لجميع مخطّطات URL (إلا إذا أخذ المعامل <code>allow_fragment</code> قيمة خاطئة) وهذا مطابق للمعيار RFC 3986. في الإصدارات السابقة كانت هناك قائمة بيضاء من المخطّطات التي تدعم القطع.
* تطلق أعداد المنفذ التي تكون خارجة عن النطاق الاستثناء ValueError في الإصدار 3.6 من بايثون، وذلك عوضًا عن إعادة القيمة None.
+
* تطلق أعداد المنفذ التي تكون خارجة عن النطاق الاستثناء <code>ValueError</code> في الإصدار 3.6 من بايثون، وذلك عوضًا عن إعادة القيمة <code>None</code>.
  
 
== أمثلة ==
 
== أمثلة ==
سطر 51: سطر 50:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
تتبع هذه الدالة المعيار RFC 1808 في التعرّف على موقع الشبكة netloc وذلك إن كان مبدوئًا بالرمز '//'، وفيما عدا ذلك فإنّ الدالة ستعدّه عنوان URL محلّيًا وبذلك تبدأ مع مكوّن المسار.
+
تتبع هذه الدالة المعيار RFC 1808 في التعرّف على موقع الشبكة <code>netloc</code> وذلك إن كان مبدوئًا بالرمز <code>'//'</code>، وفيما عدا ذلك فإنّ الدالة ستعدّه عنوان URL محلّيًا وبذلك تبدأ مع مكوّن المسار.
  
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">

مراجعة 20:48، 4 فبراير 2019


تحلّل الدالة عنوان URL إلى ستّة مكونات، وتعيد صفًّا يتضمّن 6 عناصر. تمثّل هذه المكونات البنية الرئيسية لعنوان URL وهي: scheme://netloc/path;parameters?query#fragment. يكون كل عنصر في الصفّ سلسلة نصية، وقد يكون فارغًا كذلك.

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

البنية العامة

urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)

‎المعاملات

‎scheme

يعطي المعامل scheme القيمة الافتراضية لنظام العنونة adressing scheme والذي يُستخدم في حال لم يحدّد عنوان URL قيمة لهذه المكون. يجب أن يكون نوع القيمة مشابهًا لقيمة المعامل urlstring (نص أو بايتات) باستثناء أنّه يُسمح باستخدام القيمة الافتراضية دائمًا وتحوّل إلى القيمة b‎ إن كان ذلك مناسبًا.

allow_fragments

إن أخذ هذا المعامل قيمة خاطئة، فلن تتعرّف الدالة حينئذٍ على محدّدات القطع fragment identifiers، وتحلّل كجزء من مكونات المسار أو المعاملات أو الاستعلام، وتعين سلسلة نصية فارغة كقيمة للقطع في القيمة التي تعيدها الدالة.

القيمة المعادة

القيمة المعادة نسخة من صنفٍ متفرّع من الصفوف tuples، ويمتلك هذا الصنف خصائص إضافية مساعدة تمتاز بكونها للقراءة فقط:

تؤدي قراءة خاصية port إلى إطلاق الاستثناء ValueError إن عُيِّن منفذ غير صالح في عنوان URL. راجع قسم (نتائج تحليل منظّمة) للاطلاع على المزيد من المعلومات حول الكائن المعاد.

تُطلق الأقواس المربّعة غير المتطابقة في خاصية netloc الاستثناء ValueError.

ملاحظات:

  • أضيفت إمكانية تحليل عناوين IPv6 URL في الإصدار 3.2 من بايثون.
  • تحلّل القطعة في الإصدار 3.3 من بايثون لجميع مخطّطات URL (إلا إذا أخذ المعامل allow_fragment قيمة خاطئة) وهذا مطابق للمعيار RFC 3986. في الإصدارات السابقة كانت هناك قائمة بيضاء من المخطّطات التي تدعم القطع.
  • تطلق أعداد المنفذ التي تكون خارجة عن النطاق الاستثناء ValueError في الإصدار 3.6 من بايثون، وذلك عوضًا عن إعادة القيمة None.

أمثلة

يبين المثال التالي طريقة عمل الدالة:

>>> from urllib.parse import urlparse
>>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
>>> o   # doctest: +NORMALIZE_WHITESPACE
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
            params='', query='', fragment='')
>>> o.scheme
'http'
>>> o.port
80
>>> o.geturl()
'http://www.cwi.nl:80/%7Eguido/Python.html'

تتبع هذه الدالة المعيار RFC 1808 في التعرّف على موقع الشبكة netloc وذلك إن كان مبدوئًا بالرمز '//'، وفيما عدا ذلك فإنّ الدالة ستعدّه عنوان URL محلّيًا وبذلك تبدأ مع مكوّن المسار.

>>> from urllib.parse import urlparse
 >>> urlparse('//www.cwi.nl:80/%7Eguido/Python.html')
 ParseResult(scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
            params='', query='', fragment='')
 >>> urlparse('www.cwi.nl/%7Eguido/Python.html')
 ParseResult(scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html',
            params='', query='', fragment='')
 >>> urlparse('help/Python.html')
 ParseResult(scheme='', netloc='', path='help/Python.html', params='',
            query='', fragment='')

انظر أيضًا

مصادر