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()
ありがたいことに、私はようやくその仕組みを理解しました。ここに私のコードがあります:
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')
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()
python 3でurllibを使用して、ここに私のコードがあります:
from urllib.request import urlopen
url = 'https://someurl/'
page = urlopen(url)
html = page.read()