الفرق بين المراجعتين ل"Python/urllib/request/URLopener/retrieve"

من موسوعة حسوب
< Python‏ | urllib‏ | request‏ | URLopener
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>URLopener.retrieve()‎‎</code> في بايثون}}</noinclude> يجلب التابع محتويات عنوان url وي...')
 
 
(مراجعة متوسطة واحدة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:التابع <code>URLopener.retrieve()‎‎</code> في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:التابع <code>URLopener.retrieve()‎‎</code> في بايثون}}</noinclude>
  
يجلب التابع محتويات عنوان url ويضعها في الملف المعطى.
+
يجلب التابع محتويات عنوان URL المعطى ويضعها في الملف المعطى.
  
 
== البنية العامة ==
 
== البنية العامة ==
سطر 13: سطر 13:
 
=== <code>‎reporthook</code> ===
 
=== <code>‎reporthook</code> ===
  
معامل اختياري، يجب أن يكون دالة تستقبل ثلاثة معاملات عددية هي: عدد قطعة البيانات chunk، أقصى حجم لقطع البيانات، والحجم الكلي لعملية التحميل (‎-1 إن كان الحجم مجهولًا). تستدعى هذه الدالة مرة واحدة عند بدء عملية قراءة قطعة البيانات وبعد قراءة كلّ قطعة بيانات من الشبكة. يتجاهل التابع المعامل reporthook عند استخدام عناوين URL محلية.
+
معامل اختياري، يجب أن يكون دالة تستقبل ثلاثة معاملات عددية هي: عدد قطعة البيانات chunk، أقصى حجم لقطع البيانات، والحجم الكلي لعملية التحميل (‎<code>-1</code> إن كان الحجم مجهولًا). تستدعى هذه الدالة مرة واحدة عند بدء عملية قراءة قطعة البيانات وبعد قراءة كلّ قطعة بيانات من الشبكة. يتجاهل التابع المعامل <code>reporthook</code> عند استخدام عناوين URL محلية.
  
 
=== <code>‎data</code> ===
 
=== <code>‎data</code> ===
إن استخدم المعامل url المخطط http:‎ فيمكن حينئذٍ إعطاء قيمة للوسيط الاختياري data لجعل الطلب من نوع POST (يكون الطلب من نوع GET عادةً).  يجب أن تكون قيمة الوسيط data كائن بايتات بالصيغة القياسية application/x-www-form-urlencoded. راجع الدالة urllib.parse.urlencode()‎.  
+
إن استخدم المعامل <code>url</code> المخطط <code>http:</code>‎ فيمكن حينئذٍ إعطاء قيمة للوسيط الاختياري <code>data</code> لجعل الطلب من نوع POST (يكون الطلب من نوع GET عادةً).  يجب أن تكون قيمة الوسيط <code>data</code> [[Python/bytes|كائن بايتات]] بالصيغة القياسية <code>application/x-www-form-urlencoded</code>. راجع الدالة <code>[[Python/urllib/parse/urlencode|urllib.parse.urlencode()]]</code>‎.  
 
+
== القيمة المعادة ==
 +
تكون القيمة المعادة صفًّا يتضمّن اسم الملف المحلي وإما كائن <code>email.message.Message</code> يتضمّن ترويسة الاستجابة (لعناوين URL البعيدة) أو <code>None</code> (لعناوين URL المحلية). يجب أن يفتح المستدعي بعدها ذلك الملف ويقرأ محتويات. إن لم يزوّد التابع باسم ملف وكان عنوان URL يشير إلى ملف محلّي، فإن التابع سيعيد الملف المعطى.
  
== القيمة المعادة ==
+
إن كان عنوان URL غير محلّي ولم يزوّد التابع بقيمة للمعامل <code>filename</code>، فإنّ اسم الملف سيكون مخرجات الدالة [[Python/tempfile/mktemp|<code>tempfile.mktemp()</code>‎]] مع لاحقة تطابق لاحقة آخر مكوّن مسار في عنوان URL المدخل.
تكون القيمة المعادة صفًّا يتضمّن اسم الملف المحلي وإما كائن email.message.Message يتضمّن ترويسة الاستجابة (لعناوين URL البعيدة) أو None (لعناوين URL المحلية). يجب أن يفتح المستدعي بعدها ذلك الملف ويقرأ محتويات. إن لم يزوّد التابع باسم ملف وكان عنوان URL يشير إلى ملف محلّي، فإن التابع سيعيد الملف المعطى.
 
  
إن كان عنوان URL غير محلّي ولم يزوّد التابع بقيمة للمعامل filename، فإنّ اسم الملف سيكون مخرجات الدالة tempfile.mktemp()‎ مع لاحقة تطابق لاحقة آخر مكوّن مسار في عنوان URL المدخل.
+
== أمثلة ==
 +
يبين المثال التالي النتائج التي يعيدها التابع:<syntaxhighlight lang="python3">
 +
>>> from urllib import request
 +
>>> opener = request.URLopener()
 +
>>> f = opener.retrieve('https://www.python.org')
 +
>>> f[0]
 +
'/tmp/tmpbxw260qu'
 +
>>> f[1]
 +
<http.client.HTTPMessage object at 0x7f3e9ad74978>
 +
>>> f[1].as_string()
 +
'Server: nginx\nContent-Type: text/html; charset=utf-8\nX-Frame-Options: SAMEORIGIN\nx-xss-protection: 1; mode=block\nX-Clacks-Overhead: GNU Terry Pratchett\nVia: 1.1 varnish\nContent-Length: 49408\nAccept-Ranges: bytes\nDate: Sun, 03 Feb 2019 19:18:49 GMT\nVia: 1.1 varnish\nAge: 1221\nConnection: close\nX-Served-By: cache-iad2124-IAD, cache-fra19151-FRA\nX-Cache: HIT, HIT\nX-Cache-Hits: 1, 3\nX-Timer: S1549221530.768946,VS0,VE0\nVary: Cookie\nStrict-Transport-Security: max-age=63072000; includeSubDomains\n\n'
  
 +
</syntaxhighlight>
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==

المراجعة الحالية بتاريخ 19:22، 3 فبراير 2019


يجلب التابع محتويات عنوان URL المعطى ويضعها في الملف المعطى.

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

URLopener.retrieve(url, filename=None, reporthook=None, data=None)

‎المعاملات

‎reporthook

معامل اختياري، يجب أن يكون دالة تستقبل ثلاثة معاملات عددية هي: عدد قطعة البيانات chunk، أقصى حجم لقطع البيانات، والحجم الكلي لعملية التحميل (‎-1 إن كان الحجم مجهولًا). تستدعى هذه الدالة مرة واحدة عند بدء عملية قراءة قطعة البيانات وبعد قراءة كلّ قطعة بيانات من الشبكة. يتجاهل التابع المعامل reporthook عند استخدام عناوين URL محلية.

‎data

إن استخدم المعامل url المخطط http:‎ فيمكن حينئذٍ إعطاء قيمة للوسيط الاختياري data لجعل الطلب من نوع POST (يكون الطلب من نوع GET عادةً). يجب أن تكون قيمة الوسيط data كائن بايتات بالصيغة القياسية application/x-www-form-urlencoded. راجع الدالة urllib.parse.urlencode()‎.

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

تكون القيمة المعادة صفًّا يتضمّن اسم الملف المحلي وإما كائن email.message.Message يتضمّن ترويسة الاستجابة (لعناوين URL البعيدة) أو None (لعناوين URL المحلية). يجب أن يفتح المستدعي بعدها ذلك الملف ويقرأ محتويات. إن لم يزوّد التابع باسم ملف وكان عنوان URL يشير إلى ملف محلّي، فإن التابع سيعيد الملف المعطى.

إن كان عنوان URL غير محلّي ولم يزوّد التابع بقيمة للمعامل filename، فإنّ اسم الملف سيكون مخرجات الدالة tempfile.mktemp() مع لاحقة تطابق لاحقة آخر مكوّن مسار في عنوان URL المدخل.

أمثلة

يبين المثال التالي النتائج التي يعيدها التابع:

>>> from urllib import request
>>> opener = request.URLopener()
>>> f = opener.retrieve('https://www.python.org')
>>> f[0]
'/tmp/tmpbxw260qu'
>>> f[1]
<http.client.HTTPMessage object at 0x7f3e9ad74978>
>>> f[1].as_string()
'Server: nginx\nContent-Type: text/html; charset=utf-8\nX-Frame-Options: SAMEORIGIN\nx-xss-protection: 1; mode=block\nX-Clacks-Overhead: GNU Terry Pratchett\nVia: 1.1 varnish\nContent-Length: 49408\nAccept-Ranges: bytes\nDate: Sun, 03 Feb 2019 19:18:49 GMT\nVia: 1.1 varnish\nAge: 1221\nConnection: close\nX-Served-By: cache-iad2124-IAD, cache-fra19151-FRA\nX-Cache: HIT, HIT\nX-Cache-Hits: 1, 3\nX-Timer: S1549221530.768946,VS0,VE0\nVary: Cookie\nStrict-Transport-Security: max-age=63072000; includeSubDomains\n\n'

انظر أيضًا

  • الدالة URLopener.open()‎: يفتح التابع عنوان URL الكامل المعطى باستخدام البروتوكول المناسب.

مصادر