2012-03-18 10 views
1

私は美しいスープを使ってページスクレイパーを書いていますが、ページが完全に読み込まれていなくてもページを解析しようとすることがあります。python urlopenの読み込みが完了したことを確認してください

私は何をやっていることは、このようなものです:

soup = BeautifulSoup(urllib.urlopen(page)) 

ので、私は、Pythonと非常によくないんだけど、私は私がページの読み込みが完了したことを知るための方法がなければならないと思います私はそれを廃棄することができます。

すべてがロードされるまで待機していないことを知っている理由は、スクリプトがほとんどの場合動作するためですが、ページ上で探している要素がないまだ)

誰も私にこの手を与えることができますか?

答えて

2

は、文字列にすべてを読んで試してみてください。

html = urllib.urlopen(page).read() 
soup = BeautifulSoup(html) 

BSのドキュメントが開かれたファイルオブジェクトを渡すことは結構ですと言うが、このようにそれをしようとすることは良いアイデアです。 それでも失敗すれば、それはBSに全く関係していないことを意味します。この場合は、print htmlあなたが受け取ったものを見ることができます。たぶんあなたがPythonスクリプトなどからアクセスするときにサイトにログインしていないからです。

1

ロードしようとしているページにJavaScriptがありますか?それは完全に読み込むことからそれを防ぐかもしれません - それは単なる静的なWebページの場合.urlopen()はうまくいくはずです... JavaScriptが本当に問題であれば、PyQt4のようなものを試してからページを読み込み、HTMLを抽出するか、またはSeleniumまたは風車。