web-dev-qa-db-ja.com

python 3でurllibを使用するには?

python 3。

Python 2.7で動作し、urllib2を使用しているコードを作成しました。インターネット上のページ(認証が必要)に移動し、そのページから情報を取得します。

私にとって本当の問題は、urllib2がなく、urllibの動作が異なるため、コードをpython 3.4で動作させることができないことです。数時間のグーグルと読書の後でも何も得られませんでした。だから誰かが私がこれを解決するのを手伝ってくれるなら、私はその助けに本当に感謝します。

ここに私のコードがあります:

    request = urllib2.Request('http://mysite/admin/index.cgi?index=127')
    base64string = base64.encodestring('%s:%s' % ('login', 'password')).replace('\n', '')
    request.add_header("Authorization", "Basic %s" % base64string)
    result = urllib2.urlopen(request)
    resulttext = result.read()
13
mooose

ありがたいことに、私はようやくその仕組みを理解しました。ここに私のコードがあります:

request = urllib.request.Request('http://mysite/admin/index.cgi?index=127')
base64string = base64.b64encode(bytes('%s:%s' % ('login', 'password'),'ascii'))
request.add_header("Authorization", "Basic %s" % base64string.decode('utf-8'))
result = urllib.request.urlopen(request)
resulttext = result.read()

結局のところ、urllibにはもう1つの違いがあります。私の場合、resulttext変数のタイプは<bytes> の代わりに <str>ので、テキストを使用して何かをするには、デコードする必要がありました。

text = resulttext.decode(encoding='utf-8',errors='ignore')
10
mooose

rllib.request についてはどうですか?必要なものはすべて揃っているようです。

import base64
import urllib.request

request = urllib.request.Request('http://mysite/admin/index.cgi?index=127')
base64string =  bytes('%s:%s' % ('login', 'password'), 'ascii')
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib.request.urlopen(request)
resulttext = result.read()
8

python 3でurllibを使用して、ここに私のコードがあります:

from urllib.request import urlopen

url = 'https://someurl/'
page = urlopen(url)
html = page.read()
1
Banjali