2

Python で urllib と urllib2 を使用して Web ページを開いたり読んだりしていますが、取得したテキストが読めないことがあります。たとえば、これを実行すると:

import urllib

text = urllib.urlopen('http://tagger.steve.museum/steve/object/141913').read()
print text

読めないテキストが表示されます。私はこれらの投稿を読みました:

urlopen から意味不明

Python urllib2 は Web ページから取得した gzip データを自動的に解凍しますか?

しかし、私の答えが見つからないようです。

よろしくお願いします。


更新:ユーザーエージェントがクローラーではなくブラウザーであることをサーバーに「納得させる」ことで問題を修正しました。

import urllib

class NewOpener(urllib.FancyURLopener):
  version = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.120 Chrome/15.0.874.120 Safari/535.2'

nop = NewOpener()
html_text = nop.open('http://tagger.steve.museum/steve/object/141913').read()

返信ありがとうございます。

4

2 に答える 2

2

このちんぷんかんぷんは、 への要求に対する実際のサーバーの応答です'http://tagger.steve.museum/steve/object/141913'。実際には、難読化された JavaScript のように見えます。ブラウザで実行すると、ページ コンテンツが読み込まれます。

このコンテンツを取得するには、この JavaScript を実行する必要がありますが、これは Python 内では非常に困難な作業になる可能性があります。それでもやりたい場合は、 をご覧くださいpywebkitgtk

于 2011-11-25T16:09:12.680 に答える
1

Seleniumを使用してコンテンツを取得できます。サーバーとクライアントのドライバーをダウンロードし、サーバーを実行して、これを実行します。

from selenium import selenium
s = selenium("localhost", 4444, "*chrome", "http://tagger.steve.museum")
s.start()

s.open("/steve/object/141913")

text = s.get_html_source()
print text
于 2011-11-25T16:59:12.680 に答える