使用 scrapy-splash 选择元素并在之后截图
Selecting elements with scrapy-splash and screenshot after
在使用 scrapy-splash 时,我试图进入下拉列表,在这种情况下 select "Vanilla"。从下拉列表中 selecting 后,我需要截取我当前正在使用的屏幕截图。这是我目前所拥有的。
class TestSpider(scrapy.Spider):
name = 'test'
def start_requests(self):
splash_args = {
'png': 1,
'render_all': 1,
'wait': 2,
}
url = 'https://developer.mozilla.org/en-US/docs/Web/Events/change'
yield SplashRequest(
url,
endpoint='render.html',
args=splash_args
)
yield scrapy.Request(
f"http://192.168.99.100:8050//render.png?url={url}&wait=2&render_all=1",
self.parse_request,
)
def parse_request(self, response):
with open('request.png', 'wb') as f:
f.write(response.body)
您可以通过 js_source
参数将 js 脚本传递给 splash_args
中的 运行。在你的情况下,你可能想做这样的事情:
splash_args = {
'png': 1,
'render_all': 1,
'wait': 2,
'js_source': 'document.getElementById("mySelect").value = "Vanilla";'
}
在使用 scrapy-splash 时,我试图进入下拉列表,在这种情况下 select "Vanilla"。从下拉列表中 selecting 后,我需要截取我当前正在使用的屏幕截图。这是我目前所拥有的。
class TestSpider(scrapy.Spider):
name = 'test'
def start_requests(self):
splash_args = {
'png': 1,
'render_all': 1,
'wait': 2,
}
url = 'https://developer.mozilla.org/en-US/docs/Web/Events/change'
yield SplashRequest(
url,
endpoint='render.html',
args=splash_args
)
yield scrapy.Request(
f"http://192.168.99.100:8050//render.png?url={url}&wait=2&render_all=1",
self.parse_request,
)
def parse_request(self, response):
with open('request.png', 'wb') as f:
f.write(response.body)
您可以通过 js_source
参数将 js 脚本传递给 splash_args
中的 运行。在你的情况下,你可能想做这样的事情:
splash_args = {
'png': 1,
'render_all': 1,
'wait': 2,
'js_source': 'document.getElementById("mySelect").value = "Vanilla";'
}