لا تعمل مكالمة Python Urllib.urlopen () بعنوان URL الذي يقبل المستعرض
سؤال
إذا أشر إلى فايرفوكس في http://bitbucket.org/tortoisehg/stable/wiki/home/releasenotes., ، أحصل على صفحة من HTML. ولكن إذا حاولت هذا في بيثون:
استيراد موقع Urllib = 'http://bitbucket.org/tortoisehg/stable/wiki/home/releasenotes' req = orllib.urlopen (الموقع) النص = req.read ()
أحصل على ما يلي:
500 خطأ خادم داخلي واجه الخادم خطأ داخليا أو خطأ في التفكير ولم يتمكن من إكمال طلبك.
ما الخطأ الذي افعله؟
المحلول
أنت لا تفعل أي شيء خاطئ، يقوم Bitbucket ببعض اكتشاف وكيل المستخدم (للكشف عن عملاء ضروريين على سبيل المثال). مجرد تغيير وكيل المستخدم إصلاحه (إذا لم يكن لديك urllib
كسلسلة فرعية).
يجب عليك ملء مشكلة فيما يتعلق بهذا: http://bitbucket.org/jespern/bitbucket/issues/new/
نصائح أخرى
أنت لا تفعل شيئا خاطئا، على السطح، وكما تقول صفحة الخطأ، يجب عليك الاتصال بمسؤولي الموقع لأنهم هم الذين لديهم سجلات الخادم التي قد تفسر ما يحدث. لحسن الحظ، مدراء موقع Bitbucket هو حفنة ودية!
لا شك أن هناك بعض الرؤوس أو مزيج من الرؤوس التي تضعها المتصفحات بطريقة أو بأخرى، ويحدد urllib بطريقة أخرى، ويحصل دغدغة الخلل على الخادم في الحالة الأخيرة. قد ترغب في أن ترى بالضبط ما يتم إرسال رؤوسه على سبيل المثال مع Firebug في Firefox، وإعادة إنتاج تلك حتى تعزلك بالضبط خطأ الخادم؛ على الأرجح أنه سيكون وكيل المستخدم أو بعض "قبول" -. رأس دغدغة هذا الخطأ.
لا أعتقد أنك تفعل أي شيء خاطئ - يبدو أن هذا الخادم كان لأسفل فقط؟ عمل البرنامج النصي جيدا بالنسبة لي ("النص" الموجود في نفس البيانات التي يتم عرضها في المتصفح).