[英]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.