0

サイトからデータをスクレイピングするために spynner を使用しています。私のコードはこれです:

import spynner

br = spynner.Browser()
br.load("http://www.venere.com/it/hotel/roma/hotel-ferrari/#reviews")
text = br._get_html()

このコードは、html ページ全体の読み込みに失敗します。これは私が受け取ったhtmlです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>

<script type="text/javascript">(function(){var d=document,m=d.cookie.match(/_abs=(([or])[a-z]*)/i)
v_abs=m?m[1].toUpperCase():'N'
if(m){d.cookie='_abs='+v_abs+'; path=/; domain=.venere.com';if(m[2]=='r')location.reload(true)}
v_abp='--OO--OOO-OO-O'
v_abu=[,,1,1,,,1,1,1,,1,1,,1]})()

私の質問は次のとおりです。完全なhtmlをロードするにはどうすればよいですか?

詳しくは:

私は試しました:

import spynner
br = spynner.Browser()
respond = br.load("http://www.venere.com/it/hotel/roma/hotel-ferrari/#reviews")

if respond == None:
   br.wait_load ()

しかし、html のロードは完全でも確実でもありません。何が問題ですか?私はおかしくなりそうだ。

繰り返しますが、私は Django 1.3 で作業しています。Python (2.7) で同じコードを使用すると、すべての html が読み込まれることがあります。

4

1 に答える 1

0

test.htmlの内容を確認すると、id = "feedback -... somenumber ..."のp要素が見つかります:

import spynner

def content_ready(browser):
    if 'id="feedback-' in browser.html:
        return True

br = spynner.Browser()
br.load("http://www.venere.com/it/hotel/roma/hotel-ferrari/#reviews", wait_callback=content_ready)

with open("test.html", "w") as hf:
    hf.write(br.html.encode("utf-8"))
于 2012-10-16T16:38:04.800 に答える