我需要使用“加载更多”按钮来抓取网站。 我需要捕获json响应(在html代码中不可见)并进行解析以构建URL
这是JSON发布请求响应
我正在使用Selenium,python。 我如何 ? tHX
答案 0 :(得分:1)
您可以通过阅读单击按钮后网站正在发送的API调用,然后通过Selenium发送,来绕过实际单击“加载更多”按钮。如果通过Selenium发送,则可以捕获响应。这是我一直在使用Angular网站的内容。您必须对其进行修改才能与您正在使用的网站一起使用,但这应该可以帮助您入门。
call = """
$http = angular.element(document.body).injector().get('$http');
var done = arguments[0];
$http({
method: 'POST',
headers: {
"Content-Type": "application/json"
},
data: {
foo: "bar"
},
url: "https://request.url/"
}).then(data => done(data));
"""
json_response = driver.execute_async_script(call)
execute_async_script
方法将进行调用并等待JSON响应。
您还可以在Chrome DevTools中的xhr上单击鼠标右键,然后复制API调用,这样可以更轻松地使用selenium重新创建它。
如果您有后续问题,请告诉我。