2011-06-23 7 views
12

urllib2'nin nasıl çalıştığını ve gerçek bir istek veya yanıt göndermeden önce çeşitli bileşenlerini nasıl kapsüllediğini öğrenmeye çalışıyorum.urllib2.Request (<url>) nedir ve nasıl yazdırıyor/görüntülüyor

Şimdiye kadar var:

açıkçası bakmak URL'sini belirten
theurl = "www.example.com" 

.

req = urllib2.Request(theurl) 

Bunun ne olduğunu bilmiyorum, dolayısıyla soru.

handle = urllib2.urlopen(req) 

Bu, sayfayı alır ve tüm istekleri ve yanıtları gerektirir.

Benim soru, urllib2.Request aslında ne yapar mı?

denemek ve ona bak ben

print req 

çalıştı bir fikir edinmek için ve sadece ben de

print req.read() 

çalıştı ve got

<urllib2.Request instance at 0x123456789> 

var için:

Traceback (most recent call last): 
    File "<stdin>", line 1, in ? 
    File "/usr/lib64/python2.4/urllib2.py, line 207, in `__`getattr`__` 
     raise AttributeError, attr 
AttributeError: read 

Yani açıkçası yanlış bir şey yapıyorum. Her iki sorudan birinde de herkes yardımcı olabilirse, bu harika olurdu.

+2

http://docs.python.org/library/urllib2.html – Blair

+2

@Blair geçen bir kontrol python 'urllib2' docs çok büyük değildi ... Michael Foord'un oldukça iyi bir doktoru var: http://www.voidspace.org.uk/python/articles/urllib2.shtml –

+0

-3? Dostum, bu çok zor. Bunun yerine birkaç soruya nasıl oy vereceksiniz? – MatthewD

cevap

14

sınıf "İstek" Hakkında bilgi istediğiniz: http://docs.python.org/library/urllib2.html#urllib2.Request

sınıf urllib2.Request (url [veri] [, başlıklar] [, origin_req_host] [, Doğrulanamayan])

Bu sınıf bir URL talebinin bir özetidir.

aslında bir istek nesnesi inşa (bir Request nesneyi kabul veya provice bir URL dizesi etrafında bir tane sarabilirsiniz) bir istek) yapmak istiyorum fonksiyonu: http://docs.python.org/library/urllib2.html#urllib2.urlopen

urllib2.urlopen (url [, data] [, timeout]) Bir dize veya İstek nesnesi olabilen URL URL'sini açın.

Örnek: (Request ile)

theurl = "www.example.com" 
try: 
    resp = urllib2.urlopen(theurl) 
    print resp.read() 
except IOError as e: 
    print "Error: ", e 

Örnek 2:

theurl = "www.example.com" 
try: 
    req = urllib2.Request(theurl) 
    print req.get_full_url() 
    print req.get_method() 
    print dir(req) # list lots of other stuff in Request 
    resp = urllib2.urlopen(req) 
    print resp.read() 
except IOError as e: 
    print "Error: ", e 
3

urllib2.Request() bir işlev çağrısı gibi görünüyor, ama değil - bir nesne yapıcı bu. here belgelenen urllib2 modülünden bir tür İstek nesnesi oluşturur.

Böyle olunca muhtemelen kendisi initialise dışında bir şey yapmaz. Bunu, Python kurulumunun lib dizininde olması gereken kaynak koduna bakarak doğrulayabilirsiniz (urllib2.py, en azından Python 2.x).

+0

Cevaplar için teşekkürler. @ S.Lott - Talebin amacı ile daha çok ilgileniyordum. Sapı okumak, görmek istediğimden daha da aşağı doğru. @Bliar - Yönü için teşekkürler, oraya baktım ama Mike çok zayıfsa, açıklama olduğunu söyledi. @Maike - Bağlantınız için teşekkürler, sonradan yaptığım açıklama. Şimdi mantıklı. Yine de neden istek nesnesinin içeriğini yazdıramadığımı/görüntüleyemediğimi bilmiyorum. – user788462

+0

öneri için teşekkürler, ama S.Lott ile aynı, görmek istediğim bilgilerle birlikte bana sağlamaz. "Tutamaç" baskısı sadece toplanan web sayfasını yazdırır. "Req" yi ve "theurl" ile nasıl kullanıldığını, üstelere nasıl kullanıldığını görmek istiyorum. @ Sentinel- iyi bir gün geçiriyoruz :). Temel araştırmalardan yoksun gibi gözüküyor. – user788462

+0

Tamam, cevabımı düzenledim. Umarım daha yararlıdır. – MatthewD

İlgili konular