神箭手爬虫的内置对象有哪些?
- 作者:神箭手官网 ——来源:神箭手官网 ——为了更方便的让用户编写爬虫和更个性化和智能化的编写,内置了一些对象在里面。这些对象有哪些,都有什么用呢!这里就给你介绍一下。包括全局对象和回调函数中传递的对象。首先我们来说下site对象。
site对象在回调函数中传递,表示整个爬取站点,其生命周期对应整个爬虫的生命周期。
addUrl
function addUrl(url, options)
@param String url 要添加到待爬队列的链接
@param JS对象 options 可选参数对象
此函数用来主动将url添加到待爬队列,平台会自动根据contentUrlRegexes正则来判断该url是否应该添加到contentUrl队列。
options对象
参数options对象主要用来设置请求参数,可设置属性如下:
method String HTTP请求方式
可选值GET和POST,默认GET。
data JS对象 HTTP的POST数据
平台默认会对值进行urlencode,不需要主动urlencode。
POST数据支持文件上传,示例代码如下:
//下面这段代码模拟网站 https://www.upload.com/ 的上传文件请求
//下载文件并将文件内容存到变量img中
var img = site.requestUrl("http://www.example.com/images/demo.png", {
charset:"ISO-8859-1"
});
//构建上传文件的请求
site.addUrl("https://www.upload.com/upload.html", {
method: "POST",
headers: {
"X-Requested-With": "XMLHttpRequest"
},
data: {
"image": new file(img, "img.jpg"),//表示将img的内容作为文件上传,文件名为"img1.jpg"
}
});
contextData JS对象或String 附加在此url上的数据
附加的数据可以在field定义中直接抽取,也可以在回调函数中通过page.contextData访问。如果添加的时候使用的是JS对象,会被自动序列化为JSON字符串,这种情况下,page.contextData也是JSON字符串。
headers JS对象 HTTP的请求头
可以单独设置此次请求使用的header。
reserve Boolean 此url是否不判断链接去除直接插入待爬队列
此值为true时,添加时不进行链接去重的判断。
noProxy Boolean 此请求是否强制不使用代理
此值为true时,本次请求不会使用代理,为false时,根据爬虫设置决定是否使用代理。一般在爬虫中访问自己的HTTP链接时使用此选项。
charset String 此请求使用的编码
可以单独设置此次请求的编码方式。对返回的内容直接使用此编码进行解码。在对POST的data进行自动编码时,如果headers里面设置了Content-Type,并且指定了charset,则使用指定的charset,否则使用此charset。
timeout Integer 此请求的超时时间
可以单独设置此次请求的超时时间,覆盖全局的超时时间。
base64 Boolean 是否对返回内容进行base64编码
为true时,先对返回内容进行base64编码后再返回,多在直接获取图片内容时使用。
result String 可指定获取更详细的内容
可设置为”response”,来使requestUrl返回一个response对象,而非只返回网页内容。
dupValue String 替换默认的链接去重
在进行链接去重时,默认使用的是链接本身(POST请求会带上POST的data),如果设置了此值,则直接使用此值进行链接去重。
使用场景:
在爬取搜索引擎的搜索结果时,每次搜索结果都是一个临时地址,即使是相同的网页,它的链接地址也在一直变,这样链接去重就失去了意义。这种情况,可以从列表中抽取一些特征值,比如标题、时间等,拼接成字符串,赋值给dupValue,链接去重阶段就会使用这个值进行去重,从而达到去重的目的。
ignoreCookies Boolean 忽略此次请求返回的cookie
为true时,忽略本次请求返回的cookie,默认每次请求返回的cookie会被自动存储。
urlEncodeData Boolean 是否对POST的data进行urlencode
默认会进行urlencode,如果请求编码比较特殊,有的键值进行了编码,有的键值不进行编码,需要设置此值为false,然后主动选择编码或不编码。
enableJS Boolean 此次请求是否开启JS渲染
可单独为此次请求设置是否进行JS渲染,默认由全局的enableJS决定。
events JS对象数组 开启渲染时可以额外执行的模拟操作
设置JS渲染网页后需要触发的事件。目前只支持点击事件,并且只支持一个,即模拟点击网页上的元素,可以使网页加载新的JS资源,并更新网页内容。事件格式是{"事件名":xpath},xpath是要点击元素的xpath,所以events的值可能时这样的:
[
{
"click": "//div[@id='more-content']"
}
]
retryNum Integer 请求失败的重试次数
默认为0,不进行重试,一般在requestUrl的时候使用。
noFail Boolean 此请求处理失败时是否进入失败队列
默认会进入失败队列,当此值为true时,不进入失败队列。在处理有失效性的链接时,多用此选项。
noRetry Boolean 是否不进行失败重试
在请求下载失败时,默认会按retryNum的次数进行重试。此值为true时,此次请求不进行重试操作,如果是代理导致的下载失败,在切换代理后还会进行重试。
disableRetry Boolean 是否强制不重试
此值为true时,会进一步禁止代理切换后的重试。
addScanUrl
function addScanUrl(url, options)
@param String url 要添加到scanUrl待爬队列的链接
@param JS对象 options 可选参数对象
此函数用来将url添加到scanUrl队列,参数options与addUrl完全相同。
requestUrl
function requestUrl(url, options)
@param String url 要请求的链接地址
@param JS对象 options 可选参数对象
@return String或JS对象 默认直接返回网页内容。当options.base64为true时,返回网页内容的base64编码字符串;当options.result为"response"时,返回response对象。
此函数用来发送请求,并获取请求的返回内容,可大大增强爬虫获取数据的灵活性。
options对象
options参数与addUrl中的options对象,除了队列相关的选项不起作用外,其他选项都一致。
response对象
raw String
返回的网页内容,当options.base64为true时,此内容是base64编码后的内容。
statusCode Integer
HTTP状态码,发生重定向时,此状态码是重定向后的状态码。参考HTTP状态码大全。
statusReason String
HTTP响应状态字符串,与状态码对应。
isRedirect Boolean
是否发生重定向。
redirectLocations String数组
发生重定向时的重定向地址,发生多次重定向时,数组按重定向的顺序依次记录。
headers JS对象
响应的header头。
注意:Set-Cookie很可能会有多个,它的值是一个字符串数组
示例值如下:
{
"Transfer-Encoding": "chunked",
"BDPAGETYPE": "1",
"Server": "BWS/1.1",
"Connection": "Keep-Alive",
"BDQID": "0xd55cc8d200001c08",
"P3P": "CP=\" OTI DSP COR IVA OUR IND COM \"",
"Date": "Mon, 05 Feb 2018 10:17:38 GMT",
"X-UA-Compatible": "IE=Edge,chrome=1",
"Cache-Control": "private",
"Vary": "Accept-Encoding",
"Set-Cookie": [
"BDSVRTM=10; path=/",
"BD_HOME=0; path=/",
"H_PS_PSSID=1442_21099_18559_17001_22158; path=/; domain=.example.com"
],
"Cxy_all": "e969132750ca3c2b69c1d967e0734955",
"Expires": "Mon, 05 Feb 2018 10:16:53 GMT",
"BDUSERID": "0",
"Content-Type": "text/html; charset=utf-8",
"X-Powered-By": "HPHP"
}
request JS对象
请求的相关信息,记录的信息包括url(请求地址)、method(请求方式GET/POST)、headers(请求头)、data(POST参数),示例值如下:
{
"url": "http://www.example.com",
"method": "GET",
"data": "null",
"headers": {
"Cookie": "SVRTM=0; HOME=0; SID=DC8921638D5088EEDDC37AAB129B54CC; H_PSSID=1436_21107_18559_20930; PTM=1517825858; ",
"User-Agent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; zh-CN) Gecko/20100720 (KHTML, like Gecko) Firefox/56.0.1"
}
}
requestUrlForLocation
function requestUrlForLocation(url, options)
@param String url 要请求的链接地址
@param JS对象 options 可选参数对象
@return String 返回重定向后的链接地址
此函数获取请求重定向后的地址。options中除了base64和result不生效外,其他选项与requestUrl相同。
注意:
此函数不会跟进多次重定向,只获取第一次重定向的值
如果未发生重定向,此函数返回null
requestUrlForLocations
function requestUrlForLocations(url, options)
@param String url 要请求的链接地址
@param JS对象 options 可选参数对象
@return String数组 返回重定向后的所有链接地址
此函数获取请求的所有重定向地址,数组顺序与重定向的顺序相同。未发生重定向时返回null。
async
function async(func, params)
@param function func 需要异步执行的函数
@param 任意类型 params 此参数会完整地传递给func
异步方式执行一段JS代码,多用于添加大量url的场景。示例代码:
configs.initCrawl = function(site) {
site.async(function(params) {
//site参数需要通过async的第二个参数来传递
var site = params[0];
for (var i = 1; i < 100000; i++) {
site.addUrl("https://" + i + ".example.com/");
}
}, [site]);
};
setCharset
function setCharset(charset)
@param String charset 编码格式,一般有UTF-8、GBK等。
设置解析下载网页内容使用的编码,一般无需设置,平台会自动判断,当发现平台判断不对时,可通过此函数设置,来强制使用某编码。
setUserAgent
function setUserAgent(userAgent)
@param String userAgent User-Agent
设置全局默认UserAgent,爬虫将默认使用此UserAgent。
addHeader
function addHeader(key, value)
@param String key 指定是那个header
@param String value header的值
添加全局默认header,后面的每个请求都会默认加上此header。
addCookie
function addCookie(key, value, domain)
@param String key cookie的键
@param String value cookie的值
@param String domain cookie要加到哪个域名下
添加全局默认cookie,后面的请求默认都会带上此cookie,除非在请求中特殊指明。
addCookies
function addCookies(cookies, domain)
@param String cookies 要添加的cookie键值对
@param String domain 这些cookie要添加到哪个域名下
添加全局默认cookie,cookies的格式为”key1=value1; key2=value2”,即跟header中的Cookie格式相同。此方法添加的这些cookie也是全局的,后面的请求默认都会带上这些cookie,除非在请求中特殊指明。
getCookie
function getCookie(key, domain)
@param String key 要获取的cookie的键
@param String domain 要获取哪个域名下的cookie
@return String 返回对应的cookie的值
获取指定domain下的指定cookie。
getCookies
function getCookies(domain)
@param String domain 要获取哪个domain下的cookie
@return JS对象 相应domain下所有cookie的键值对
获取指定domain下的所有cookie。
clearCookies
function clearCookies()
清空当前的所有cookie。
changeProxy
function changeProxy()
主动触发切换代理。
renderImage
function renderImage(html, width, height, format)
@param String html 要渲染成图片的html代码
@param Integer width 网页的宽度,也是图片的宽度
@param Integer height 网页的高度,也是图片的高度
@param String format 图片所用格式,默认PNG
@return String 返回渲染图片的base64编码的字符串
此函数用来将一个网页(或片段)渲染成一张图片。
如果你还有其它疑问可以来本站搜索相关问题,这里会有你想要的答案:火车脚本网

- 全部评论(0)