splash的使用之三har/json

render.har

以har格式返回有关splash于网站交互的信息.包括有关请求,收到的响应,时间,标题等的信息.可以使用在线har查看器来可视化从该端点返回的信息,类似chrome开发工具中的”网络”标签.

当request_body和response_body选项分别设置为1时,包括请求和响应内容.

由于har格式规范缺少对二进制请求数据进行编码的方法,encoding因此包括非标准字段postData,类似于har响应中的相同名称字段,具有base64当请求主题如此编码时的值.

参数与render.html相同,另外还有以下内容:

request_body:int:可选
# 可能的值为1和0.为1时请求内容包含在har记录中.默认为0.
response_body:int:可选
# 可能的值为1和0.为1时响应内容包含在har记录中.
默认为0.

render.json

返回一个json编码的字典,其中包含有关JavaScript呈现 的网页信息可以包含基于传递参数的html/png和其他信息.

参数:与render.jpeg相同,加上以下内容:

html:integer:可选
# 是否在输出中包含html,可能的值为1(include)和0(exclude),默认为0.
png:integer:可选
# 是否在输出中包含png,可能的值为1(include)和0(exclude),默认为0.
jpeg:integer:可选
# 是否在输出中包含JPEG,可能的值为1(include)和0(exclude),默认为0.
iframes:integer:可选
# 是否在输出中包含有关子帧的信息,可能的值为1(include)和0(exclude),默认为0.
script:integer:可选
# 是否在输出中包含已执行的JavaScript final语句的结果,可能的值为1(include)和0(exclude),默认为0.
console:integer:可选
# 是否包含网页主框架的请求/响应的历史记录,可能的值为1(include)和0(exclude),默认为0.
history:integer:可选
# 是否包含网页主框架的请求/响应的历史内容,可能的值
是1(include)和0(exclude),默认为0.
# 使用它来获取http状态代码和标头,仅返回关于"主要"
请求/响应的信息.要获取有关所有请求和响应的信息,请使用har参数.
har:integer:可选
是否在输出中包含har,可能的值为1(include)和0(exclude),默认为0.如果打开,结果将包含har键下的render.har相同的数据.
默认情况下,不包括请求和响应内容,要启用每个选项,请分别使用request_body和response_body.
request_body:int:可选
# 可能的值为1和0.为1时请求内容包含在har中,默认为0.
# 当har和history均为0时,选项无效.
response_body:int:可选
# 可能的值为1和0.为1时响应内容包含在har中,默认为0.
# 当har和history均为0时,选项无效.

示例

默认情况下,返回url,请求url,页面标题和框架几何图形.

{
    "url": "http://crawlera.com/",
    "geometry": [0, 0, 640, 480],
    "requestedUrl": "http://crawlera.com/",
    "title": "Crawlera"
}

添加html=1将html添加到结果中:

{
    "url": "http://crawlera.com/",
    "geometry": [0, 0, 640, 480],
    "requestedUrl": "http://crawlera.com/",
    "html": "-->",
            "requestedUrl": "http://www.youtube.com/embed/lSJvVqDLOOs?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1&wmode=transparent",
            "childFrames": []
        }
    ],
    "requestedUrl": "http://scrapinghub.com/autoscraping.html"
}

与html不同,png会影响childFrames中的数据.

执行JavaScript代码时,将参数script=1添加到请求中以在结果中包含代码输出:

{
    "url": "http://crawlera.com/",
    "geometry": [0, 0, 640, 480],
    "requestedUrl": "http://crawlera.com/",
    "title": "Crawlera",
    "script": "result of script..."
}

JavaScript代码支持console.log()函数来记录消息,将console=1添加到请求中以在结果中包含控制台输出.

{
    "url": "http://crawlera.com/",
    "geometry": [0, 0, 640, 480],
    "requestedUrl": "http://crawlera.com/",
    "title": "Crawlera",
    "script": "result of script...",
    "console": ["first log message", "second log message", ...]
}

请求示例:

full information curl ‘http://localhost:8050/render.json?url=http://domain.com/page-with-iframes.html&png=1&html=1&iframes=1’ HTML and meta information of page itself and all its iframes curl ‘http://localhost:8050/render.json?url=http://domain.com/page-with-iframes.html&html=1&iframes=1’ only meta information (like page/iframes titles and urls) curl ‘http://localhost:8050/render.json?url=http://domain.com/page-with-iframes.html&iframes=1’ render html and 320×240 thumbnail at once; do not return info about iframes curl ‘http://localhost:8050/render.json?url=http://domain.com/page-with-iframes.html&html=1&png=1&width=320&height=240’ Render page and execute simple Javascript function, display the js output curl -X POST -H ‘content-type: application/javascript’ \ -d ‘function getAd(x){ return x; } getAd(“abc”);’ \ ‘http://localhost:8050/render.json?url=http://domain.com&script=1’ Render page and execute simple Javascript function, display the js output and the console output curl -X POST -H ‘content-type: application/javascript’ \ -d ‘function getAd(x){ return x; }; console.log(“some log”); console.log(“another log”); getAd(“abc”);’ \ ‘http://localhost:8050/render.json?url=http://domain.com&script=1&console=1’

ddzzhen

发表评论