1

初めてこのようなもので作業します。内部化/テキストエンコーディングに関する他のすべてのSOFの質問を確認しました。

この部分で立ち往生したとき、私はScrapyチュートリアルを行っています:データの抽出、データを抽出すると、ヘブライ語の代わりにテキストが一連の\uXXXXとして表示されます。

たとえば、このページをスクレイピングすることで、チェックアウトすることができます。

scrapy shell http://israblog.nana10.co.il/blogread.asp?blog=167524&blogcode=13348970
hxs.select('//h2[@class="title"]/text()').extract()[0]

これは取得します

u'\u05de\u05d9 \u05d0\u05e0\u05e1 \u05e4\u05d5\u05d8\u05e0\u05e6\u05d9\u05d0\u05dc\u05d9?'

(無関係:)コンソールで印刷しようとすると、次のようになります。 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\encodings\cp437.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-1: cha racter maps to <undefined>

設定でエンコーディングを設定してみて、手動で変換してみましたが、基本的には全部やってみたような気がします。

(私はこれを修正しようとしてすでに約5つのpomodorosに行きました!)

そこにあるはずのヘブライ語のテキストを取得するにはどうすればよいですか: " מי אנס פוטנציאלי?"

(免責事項:私は最初のブログにアクセスし、 http://Israblog.co.ilに投稿しました。私はブログやブログの所有者とはまったく関係がなく、例として使用しました)

4

2 に答える 2

2

そこにあるはずのヘブライ語のテキストを取得するにはどうすればよいですか。

test.py:

# coding: utf-8

a = u'\u05de\u05d9 \u05d0\u05e0\u05e1 \u05e4\u05d5\u05d8\u05e0\u05e6\u05d9\u05d0\u05dc\u05d9?'
b = 'מי אנס פוטנציאלי?'

print a
print b

結果:

vic@wic:~/projects/snippets$ python test.py 
מי אנס פוטנציאלי?
מי אנס פוטנציאלי?
vic@wic:~/projects/snippets$

ご覧のとおり、それらは同じです。これは、同じ Unicode 文字列の異なる表現です。したがって、正しくスクレイピングされていなくても心配する必要はありません。

ファイルに保存したい場合:

Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2
>>> a = u'\u05de\u05d9 \u05d0\u05e0\u05e1 \u05e4\u05d5\u05d8\u05e0\u05e6\u05d9\u05d0\u05dc\u05d9'
>>> a
u'\u05de\u05d9 \u05d0\u05e0\u05e1 \u05e4\u05d5\u05d8\u05e0\u05e6\u05d9\u05d0\u05dc\u05d9'
>>> f = open('test.txt', 'w')
>>> f.write(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
>>> f.write(a.encode('utf-8'))
>>> f.close()
于 2012-07-07T13:23:54.883 に答える
0

ページから取得した情報をjson、xmlのどこかに保存すると、何が得られるかを確認しようとしましたか....

いくつかのサイトでいくつかの兆候に問題があり、ほとんどの場合、取得したデータで何もしなければ適切に保存されますが、コンソールでそれらを印刷しようとすると、適切な結果が得られないか、またはrepr を使用しないとエラーが発生します

print repr(data)

エンコーディングの問題のフラストレーションを知っているので、これが役立つことを願っています。

于 2012-07-07T11:45:12.677 に答える