使用httr / rvest将javascript / jQuery转换为POST

时间:2015-06-17 23:35:28

标签: r httr rvest

我正在尝试废弃网页。此网页上的部分数据使用以下脚本进行更新:



        <script>
            (function ($) {
                $(document).ready(function () {
                    var timeoutID = window.setTimeout(function () {
                        var $promise = $.ajax({
                            method: 'POST',
                            url: 'https://www.somedomain.com/cms/wp-admin/admin-ajax.php',
                            data: {
                                action: 'get_cache_guide',
                                symbol_id: 6533,
                                _wpnonce: 'b0ce23fbe8'
                            }
                        });
                        $promise.always(function (data) {
                            Chart_Guide({charts: {guide: JSON.parse(data)}});
                        });
                    }, 500);
                });
            }(jQuery));
        </script>
&#13;
&#13;
&#13;

所以,我的问题是如何根据使用Chart_Guide函数显示某些表格和图形来获取此数据(JSON)?

我尝试了以下内容(解析上述脚本元素的文本):

                method <- strsplit(strsplit(script, "method: '")[[1]][2], "',\n")[[1]][1]
                urlOfInterest <- strsplit(strsplit(script, "url: '")[[1]][2], "',\n")[[1]][1]
                action <- strsplit(strsplit(script, "action: '")[[1]][2], "',\n")[[1]][1]
                symbolID <- as.numeric(strsplit(strsplit(script, "symbol_id: ")[[1]][2], ",\n")[[1]][1]) 
                wpnonce <- strsplit(strsplit(script, "_wpnonce: '")[[1]][2], "'\n")[[1]][1]

                data <- strsplit(strsplit(script, "data: ")[[1]][2], "});")[[1]][1]

                data <- gsub("\\\n", "", data)

然后我用以下方式使用rvest和httr:

pageSession <- request_POST(pageSession, url=urlOfInterest, body=data)

然后我尝试了:

values <- list("action"=action, "symbol_id"=symbolID, "_wpnonce"=wpnonce)
pageSession <- request_POST_1(pageSession, url=urlOfInterest, body=values)

这一切都失败了......

关于如何完成此任务的建议受到高度赞赏。

0 个答案:

没有答案