【发布时间】:2018-05-05 00:03:38
【问题描述】:
我需要一种方法来获取博彩公司所有赛事的所有赔率
我正在使用 Scrapy+Splash 来获取网站的第一个 javascript 加载内容。但要获得所有其他赔率,我必须点击“Spagna-LigaSpagnola”、“Italia->Serie A”等。
我该怎么做?
【问题讨论】:
标签: python web-scraping scrapy screen-scraping scrapy-spider
我需要一种方法来获取博彩公司所有赛事的所有赔率
我正在使用 Scrapy+Splash 来获取网站的第一个 javascript 加载内容。但要获得所有其他赔率,我必须点击“Spagna-LigaSpagnola”、“Italia->Serie A”等。
我该怎么做?
【问题讨论】:
标签: python web-scraping scrapy screen-scraping scrapy-spider
您可以通过编写 JavaScript 脚本和通过告诉 Splash 在呈现您的页面时执行该脚本。
一个小例子:
您定义了一个 JavaScript 函数,它选择页面中的一个元素,然后点击它:
(来源: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
"""
然后,当您request 时,您修改endpoint 并将其设置为"execute",并将"lua_script": _script 添加到args。
def parse(self, response):
yield SplashRequest(response.url, self.parse_elem,
endpoint="execute",
args={"lua_source": _script})
你会发现所有关于splash scripting的信息here
【讨论】: