مقدمة لمكتبة urllip
إن وحدة urllip في بايثون 3 عبارة عن عن محموعة من الوحدات التي يمكننا إستخدامها للتعامل مع الروابط ، وإذا كنت قادم من بايثون 2 ستجد أن بايثون 2 لديها urllip و urllip2 أما في بايثون 3 أصبحوا عبارة عن حزمة واحدة تحت إسم urllip ويتكون الإصدار الحالي من :- urllib.request
- urllib.error
- urllib.parse
- urllib.rebotparser
urllib.request
تستخدم هذه الوحدة أساسا لفتح وجلب الروابط ، دعونا نقوم ببعض الأمثلة لنرى مالذي يمكننا فعله مع وظيفة urlopen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| >>> import urllib.request >>>url.geturl() >>>url.info() lt;http.client.HTTPMessage object at 0x7fddc2de04e0 >>> header = url.info() >>>header.as_string() ( 'Date: Fri, 24 Jun 2016 18:21:19 GMT\n' 'Expires: -1\n' 'Cache-Control: private, max-age=0\n' 'Content-Type: text/html; charset=ISO-8859-1\n' 'P3P: CP="This is not a P3P policy! See ' 'https://www.google.com/support/accounts/answer/151657?hl=en for more info."\n' 'Server: gws\n' 'X-XSS-Protection: 1; mode=block\n' 'X-Frame-Options: SAMEORIGIN\n' 'Set-Cookie: ' 'NID = 80 = tYjmy0JY6flsSVj7DPSSZNOuqdvqKfKHDcHsPIGu3xFv41LvH_Jg6LrUsDgkPrtM2hmZ3j9V76pS4K_ cBg7pdwueMQfr0DFzw33SwpGex5qzLkXUvUVPfe9g699Qz4cx9ipcbU3HKwrRYA; ' 'expires=Sat, 24-Dec-2016 18:21:19 GMT; path=/; domain=.google.com; HttpOnly\n' 'Alternate-Protocol: 443:quic\n' 'Alt-Svc: quic=":443"; ma=2592000; v="34,33,32,31,30,29,28,27,26,25"\n' 'Accept-Ranges: none\n' 'Vary: Accept-Encoding\n' 'Connection: close\n' '\n' ) >>> url.getcode() 200 |
بعد ذلك قمنا بإستدعاء info والذي سيعرض بيانات وصفية حول الصفحة مثل معلومات حول headers وهكذا يمكننا تعيين نتيجة هذا الأخير لمتغير headers ثم نقوم بمناداة as_string وهذا سيقوم بعرض header المستقبل من موقع قوقل ، يمكننا أيضا الحصول على رمز الإستجابة الخاص ب HTTP بإستدعائنا ل getcode وفي حالتنا هذه هو عبارة عن 200 وهذا يعني نجاح العملية .
إذا كنت تريد الإطلاع على كود HTML الخاص بالصفحة يمكنك مناداة طريقة READ على متغير url الذي قمنا بإنشاءه، لن أقوم بعرض الناتج لأنه سيكون كبير نوعا ما ولكن يمكنك تجربته لتتأكد.
يرجى أيضا الـتأكد من أن كائن الطلب الإفتراضي هو GET مالم يتم تحديد خيارات البيانات .
تحميل ملف
أهم إستخدامات حزمة urllib هو تحميل الملفات فدعونا نارى بعض الأمثلة لتحقيق ذلك
1
2
3
4
5
6
7
| >>> import urllib.request >>>response = urllib.request.urlopen(url) >>> data = response.read() >>> with open ( '/home/mike/Desktop/test.zip' , 'wb' ) as fobj: ... fobj.write(data) ... |
هناك طريقة أخرى لتحقيق نفس العملية وهي بإستخدام urlretrieve :
1
2
3
4
5
| >>> import urllib.request >>> urllib.request.urlretrieve(url, '/home/mike/Desktop/blog.zip' ) ( '/home/mike/Desktop/blog.zip' , <http.client.HTTPMessage object at 0x7fddc21c2470 >) |
1
2
3
4
5
6
| >>> import urllib.request >>> tmp_file, header = urllib.request.urlretrieve(url) >>> with open ( '/home/mike/Desktop/test.zip' , 'wb' ) as fobj: ... with open (tmp_file, 'rb' ) as tmp: ... fobj.write(tmp.read()) |
تحديد وكيل المستخدم الخاص بك
عندما تقوم بزيارة موقع ما من خلال المتصفح فإن هذالإخير يخبر الموقع من هو ، وهذا مايسمى بسلسلة user-agent ، مكتبة بايثون urllip تقوم بتحديد نفسها ك : Python-urllib/x.y حيث أن X و Y رقم إصدار بايثون الرئيسي والثانوي ، بعض المواقع لن تتعرف على سلسلة وكيل المستخدم وستتصرف بطريقة غريبة أو لن تعمل على الإطلاق .لحسن الحظ يمكن إعداد سلسلة وكيل المستخدم خاص بك :
1
2
3
4
5
6
7
8
| >>> import urllib.request >>> user_agent = ' Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0' >>> headers = { 'User-Agent' : user_agent} >>> request = urllib.request.Request(url, headers = headers) >>> with urllib.request.urlopen(request) as response: ... with open ( '/home/mdriscoll/Desktop/user_agent.html' , 'wb' ) as out: ... out.write(response.read()) |
حاول أن تجرب تغيير وكيل المستخدم عدة مرات مع هذا الكود حتى تفهم ألية العمل .
urllib.parse
تعتبر مكتبة urllib.parse هي الواجهة القياسية لتفكيك سلاسل الروابط و إعادة ربطهم مرة أخرى ويمكن أيضا إستخدامها لتحويل الروابط النسبية إلى روابط مطلقة ، دعونا نأخذ مثال عن تحليل الرابط يحتوي على علامة إستفهام
1
2
3
4
5
6
7
8
9
10
| >>> from urllib.parse import urlparse >>> result ParseResult(scheme = 'https' , netloc = 'duckduckgo.com' , path = '/' , params = ' ', query=' q = python + stubbing&t = canonical&ia = qa ', fragment=' ') >>> result.netloc 'duckduckgo.com' >>> result.geturl() 'https://duckduckgo.com/?q=python+stubbing&t=canonical&ia=qa' >>> result.port None |
تقديم نموذج ويب
هذه الوحدة أيضا تحتوي على طريقة urlencode وهي جيدة لتمرير البيانات إلى عناوين الروابط ، والإستخدام الشائع لمكتبة urllib.parse هو تقديم نماذج الويب ، فدعونا نكتشف كيفية عمل محرك بحث ل duckduckgo خاص ببايثون
1
2
3
4
5
6
7
8
9
10
| >>> import urllib.request >>> import urllib.parse >>> data = urllib.parse.urlencode({ 'q' : 'Python' }) >>> data 'q=Python' >>> full_url = url + '?' + data >>> response = urllib.request.urlopen(full_url) >>> with open ( '/home/mike/Desktop/results.html' , 'wb' ) as f: ... f.write(response.read()) |
إلى هنا نكون قد وصلنا إلى مرحلة ينبغي لك أن تكون قادرا على التعامل مع حزمة urllib ، فقد تعلمنا كيفية تحميل ملف ، تقديم نموذج ويب ، تغيير عميل المستخدم وهذا ا يعني ان المكتبة تقوم بهذه الوظائف فقط بل على العكس هناك العديد من المهام التي يمكن لها أن تقوم بها .
بسم الله
ردحذفGatorade Color Prop Bet | Pokies | Casinooland Japan 10cric login 10cric login 메리트카지노총판 메리트카지노총판 1XBET 1XBET 8136Free Fortunes Slot Machine Online at Konicasino
ردحذف