簡體   English   中英

在CapserJS中處理http響應正文

[英]Manipulate http response body in CapserJS

我正在將CasperJS 1.1.0-beta3與PhantomJS 1.9.8結合使用。

我如何在phantomjs解析和呈現響應主體之前對其進行編輯?

就像是:

casper.on("resource.received", function(response) {
   response.body.add("<h1>bla</h1>");
}

你做不到 PhantomJS不會公開主體,因此您無法對其進行更改。 當您收到JavaScript時,會有一些技巧 ,但這通常不能應用於任何類型的資源。

看來您收到了HTML資源。

是頁面資源

如果HTML資源是頁面資源,則可以使用resource.requested事件處理程序中止請求,使用__utils__.sendAJAX檢索頁面源,根據一些規則更改內容並將其作為當前內容加載。

var done = false;
casper.on("page.resource.requested", function(req, network){
    if (req.url === "someUrl") {
        network.abort();
        var content = this.evaluate(function(url){
            return __utils__.sendAJAX(url, "GET");
        }, req.url);
        content = content.replace("somehtml", "myhtml");
        this.page.setContent(content.replace("href=\"/", "href=\"http://domain.tld/path/"), req.url); // fix urls
        done = true;
    }
});
casper.start(someUrlToManipulate).waitFor(function check(){
    return done;
}, function then(){
    // further processing
}).run();

這是其他資源

通常使用JavaScript請求其他資源(例如模板)。 在這些情況下,您將無能為力,因為您將不得不重現處理此類響應的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM