bookmakersのすべてのイベントのすべてのオッズを取得する方法が必要scarrapyを使ってangularjsのウェブサイトをクロールするには?
私はScrapy + Splashを使用して、サイトの最初のjavascriptで読み込まれたコンテンツを取得しています。しかし、他のすべてのオッズを得るには、 "Spagna-LigaSpagnola"、 "Italia-> Serie A"などをクリックする必要があります。
どうすればいいですか?
bookmakersのすべてのイベントのすべてのオッズを取得する方法が必要scarrapyを使ってangularjsのウェブサイトをクロールするには?
私はScrapy + Splashを使用して、サイトの最初のjavascriptで読み込まれたコンテンツを取得しています。しかし、他のすべてのオッズを得るには、 "Spagna-LigaSpagnola"、 "Italia-> Serie A"などをクリックする必要があります。
どうすればいいですか?
あなたは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": _script
をargsに追加します。
def parse(self, response):
yield SplashRequest(response.url, self.parse_elem,
endpoint="execute",
args={"lua_source": _script})
あなたはそれは素晴らしいと思われるスプラッシュスクリプトhere
に関するすべての情報を検索します。この方法でボタンを選択してクリックする方法はありますか? document.querySelectorAll( ".list-group> a.list-group-item")[0] .click(); ? – xRobot