0

プログラムの上部に次のようなコードがあります。

cj=cookielib.CookieJar()
#Process Hadlers
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#install opener, now all the calls to urllib2.urlopen use this opener
urllib2.install_opener(opener)
opener.addheaders=[
                    ('User-Agent', 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9850; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.115 Mobile Safari/534.11+'),
                   # ('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
                    ('Accept-Language', 'en-gb,en;q=0.5'),
                    ('Accept-Encoding', 'gzip,deflate'),
                    ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'),
                    ('Keep-Alive', '115'),
                    ('Connection', 'keep-alive'),
                    ('Cache-Control', 'max-age=0'),
                    ('Referer', 'http://yahoo.com'),
                ]

プログラム全体にコードをコピーして貼り付けたくないので、このコードを別のクラスに移動します。私が理解している限り、呼び出し時にurllib2.install_opener(opener)すべてのヘッダー、Cookieなどを追加します。それをあるクラスに移動したいが、このコードが何を返すのか本当にわからない。さらに、メソッドに移動すると、initは何も返さないため、機能しません。urllib2urlopen()__init__

4

1 に答える 1

1

このコードをという名前のモジュールに入れて、上記で定義しurlhandler.pyたを使用することができます。それはうまくいくはずです。このコードは、オープナーをurllib2がリクエストを受け入れるためのすべての適切なハンドラーで初期化します。openerfrom urlhandler import opener

これによりopener、リクエストオブジェクトを開き、レスポンスを返すために使用します

req = urllib2.Request('http://www.yoururl.com')
res = opener.open(req)
于 2012-10-13T16:04:32.037 に答える