2017-11-21 14 views
-1

bookmakersのすべてのイベントのすべてのオッズを取得する方法が必要scarrapyを使ってangularjsのウェブサイトをクロールするには?

私はScrapy + Splashを使用して、サイトの最初のjavascriptで読み込まれたコンテンツを取得しています。しかし、他のすべてのオッズを得るには、 "Spagna-LigaSpagnola"、 "Italia-> Serie A"などをクリックする必要があります。

どうすればいいですか?

答えて

1

あなたはJavaScriptのスクリプトを足すことで、それはあなたのページをレンダリングするとき、そのスクリプトを実行するためにスプラッシュを伝えることで、スクロール、またはクリックのように、行動をエミュレートすることができます。

少しexemple:

(ソース:splash doc

-- Get button element dimensions with javascript and perform mouse click. 
_script = """ 
function main(splash) 
    assert(splash:go(splash.args.url)) 
    local get_dimensions = splash:jsfunc([[ 
     function() { 
      var rect = document.getElementById('button').getClientRects()[0]; 
      return {"x": rect.left, "y": rect.top} 
     } 
    ]]) 
    splash:set_viewport_full() 
    splash:wait(0.1) 
    local dimensions = get_dimensions() 
    splash:mouse_click(dimensions.x, dimensions.y) 

    -- Wait split second to allow event to propagate. 
    splash:wait(0.1) 
    return splash:html() 
end 
""" 

あなたはページ内の要素を選択のJavaScript機能し、それにクリックを定義します

その後、requestと入力すると、を入力して"execute"に設定し、"lua_script": _scriptargsに追加します。

def parse(self, response): 
    yield SplashRequest(response.url, self.parse_elem, 
         endpoint="execute", 
         args={"lua_source": _script}) 

あなたはそれは素晴らしいと思われるスプラッシュスクリプトhere

+0

に関するすべての情報を検索します。この方法でボタンを選択してクリックする方法はありますか? document.querySelectorAll( ".list-group> a.list-group-item")[0] .click(); ? – xRobot

関連する問題