1

これが状況です。私は POST リクエストを送信し、Python の問題で応答を取得しようとしていますリクエストはリンクを生成しません

これが私がすることです:

import urllib
import urllib2
url = 'http://donelaitis.vdu.lt/main_helper.php?id=4&nr=1_2_11'
data = 'q=bus&ieskoti=true&lang1=en&lang2=en+-%3E+lt+%28+71813+lygiagre%C4%8Di%C5%B3+sakini%C5%B3+%29&lentele=vertikalus&reg=false&rodyti=dalis&rusiuoti=freq' 
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
file = open("pagesource.txt", "w")
file.write(the_page)
file.close()

私が試みるたびに

thepage = the_page.encode('utf-8')

私はこのエラーが発生します:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 1008: ordinal not in range(128)

応答ヘッダーの Content-Type:text/html;charset=utf-8 を変更しようとするたびに、私はそうします

response['Content-Type'] = 'text/html;charset=utf-8'

私はこのエラーが発生します:

AttributeError: addinfourl instance has no attribute '__setitem__'

私の質問: 応答または要求ヘッダーを編集または削除することは可能ですか? そうでない場合、ソースをメモ帳++にコピーしてエンコーディングを手動で修正する以外に、この問題を解決する別の方法はありますか?

私はPythonとデータマイニングに不慣れです。何か間違ったことをしている場合はお知らせください。

ありがとう

4

2 に答える 2

2

あなたが望むのは、utf-8 でエンコードされたテキストから Unicode - コーディングにとらわれない - 内部文字列に移行することなので、thepage = the_page.decode('utf-8')代わりに試してみませんか?encode

于 2012-02-27T11:26:06.257 に答える
1

2つのこと。まず、レスポンスをエンコードするのではなく、デコードする必要があります。

thepage = the_page.decode('utf-8')

次に、レスポンスにヘッダーを設定したくない場合は、次のadd_headerメソッドを使用してリクエストに設定します。

req.add_header('Content-Type', 'text/html;charset=utf-8')
于 2012-02-27T11:25:43.710 に答える