كيف يمكنني الحصول على البيانات من stdin باستخدام os.system()
سؤال
الطريقة الوحيدة الموثوقة التي وجدتها لاستخدام برنامج نصي لتنزيل النص من ويكيبيديا هي باستخدام cURL.حتى الآن الطريقة الوحيدة المتاحة لي للقيام بذلك هي الاتصال os.system()
.على الرغم من أن الإخراج يظهر بشكل صحيح في python Shell، لا يبدو لي أنه يعمل على إرجاع أي شيء آخر غير رمز الخروج (0
).بالتناوب يمكن لشخص ما أن يوضح كيفية الاستخدام بشكل صحيح urllib
.
المحلول
import urllib
sock = urllib.urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)")
htmlsource = sock.read()
sock.close()
print htmlsource
سيؤدي ذلك إلى طباعة الكود المصدري لمقالة Python Wikipedia.أقترح عليك إلقاء نظرة على Dive into Python لمزيد من التفاصيل.
مثال باستخدام urllib2 من مرجع مكتبة بايثون:
import urllib2
f = urllib2.urlopen('http://www.python.org/')
print f.read(100)
يحرر:كما قد ترغب في إلقاء نظرة على wget.
تحرير 2:تمت إضافة مثال urllib2 بناءً على نصيحة S.Lott
نصائح أخرى
وردا على سؤال، بيثون على وحدة فرعي أو جانبي والذي يسمح لك بالتفاعل مع عمليات لدت HTTP: // docs.python.org/library/subprocess.html#subprocess.Popen
وانها تسمح لك لقراءة المعياري لعملية الاحتجاج، وحتى إرسال العناصر إلى ستدين.
ولكن كما قلت urllib هو خيار أفضل بكثير. إذا كنت بحث ستاكوفيرفلوو أنا متأكد من أنك سوف تجد ما لا يقل عن 10 أسئلة أخرى ذات الصلة ...
وباعتبارها alternetive إلى urllib، يمكنك استخدام يبكورل بيثون الارتباطات .