抓取-使用python捕获json响应

时间:2018-10-01 17:23:42

标签: json ajax selenium web screen-scraping

我需要使用“加载更多”按钮来抓取网站。 我需要捕获json响应(在html代码中不可见)并进行解析以构建URL

这是JSON发布请求响应

我正在使用Selenium,python。 我如何 ? tHX

1 个答案:

答案 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重新创建它。

如果您有后续问题,请告诉我。