神箭手内置Page对象的属性和方法
- 作者:神箭手官网 ——来源:神箭手官网 ——page对象主要是在回调函数中传递使用,表示正在爬取网页。它的生命周期对应的是URL的生命周期。简单的说就就是URL被调度后开始它的生命周期,page对象会随后创建,并一直持续到URL的生命周期结束之前。那么page对象有哪些属性和方法,page对象的属性有:url,raw,contextData,request和response,page对象的方法只有一个skip(),通常用来过滤抽取结果。下面对属性和方法进行详细的讲解。
属性
一、url
String
url
网当前页的链接地址。url的值只能在beforeDownloadPage和afterDownloadPage函数中修改,在其他回调函数中修改均不会影响后续的回调函数。
二、raw
String
raw
下载的网页原始内容。beforeDownloadPage
中raw的值为null
,因为此时还未开始下载。raw的值只能在afterDownloadPage
回调函数中修改,在其他回调函数中修改均不会影响后续的回调函数。
page.raw
和content
的区别:
有的回调函数会回传一个content
参数,说明也是网页内容,区别在于,page.raw
是网页的原始下载内容(afterDownloadPage
函数内部修改后的),content
基于page.raw
做了网页链接处理,把其中的相对链接地址替换成了绝对链接地址。
三、contextData
String
contextData
当前网页的附加数据,是site.addUrl
的时候附加的contextData
数据。
注意:
如果site.addUrl
的时候,附加的数据是JS对象,此处的contentData
是JSON字符串,需要JSON.parse
才能转换成原来的JS对象。
四、request
JS对象
request
当前网页的HTTP请求对象,属性包括url
、method
、data
、headers
。
-
url
String
等同于page.url
。 -
method
String
HTTP的请求方式,GET
或POST
-
data
JS对象
POST参数。 -
headers
JS对象
请求的header头。示例值如下:{ "Cookie": "EXAMPLEUID=8853949B8FD7CEC798A8591AFCD5D42A:FG=1; EXUPSID=8853949B8FD7CEC798A8591AFCD5D42A; EX_PSSID=25641_1452_21097_17001_22158; EXTM=1517829664; ", "User-Agent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_10_2) AppleWebKit/536.10 (KHTML, like Gecko) Chrome/63.0.3239 Safari/537.17" }
五、response
JS对象
response
当前网页的HTTP响应对象,属性包括statusCode
、statusReason
、isRedirect
、redirectLocations
、headers
。
-
statusCode
Integer
HTTP状态码,发生重定向时,此状态码是重定向后的状态码。参考HTTP状态码大全。 -
statusReason
String
HTTP响应状态字符串,与状态码对应。 -
isRedirect
Boolean
是否发生重定向。 -
redirectLocations
String数组
发生重定向时的重定向地址,发生多次重定向时,数组按重定向的顺序依次记录。 -
headers
JS对象
返回的header头。
注意:Set-Cookie
很可能会有多个,它的值是一个字符串数组
示例值如下:
方法skip
function skip(fieldName)
|
@param
String
fieldName
抽取项名,可不传。
此函数可以用来过滤抽取结果。不传参数时,即page.skip()
,表示丢弃当前整个网页的抽取结果。传fieldName
时,表示过滤该field
下的当前抽取结果。
示例1:文章标题中不含”经济学”,过滤掉
configs.afterExtractField = function(fieldName, data, page, site) { if (fieldName == "article_title") { //如果"article_title"的抽取结果中不包含"经济学",就过滤掉这篇文章 if (data.indexOf("经济学") == -1) { page.skip(); } } return data; }; |
示例2:过滤掉点赞数小于5的评论
configs.afterExtractField = function(fieldName, data, page, site) { if (fieldName == "comments.agree_count") { //如果评论的点赞数小于5,过滤掉"comments"的这条抽取结果 if (parseInt(data) < 5) { page.skip("comments"); } } return data; }; |
如果你还有其它疑问可以来本站搜索相关问题,这里会有你想要的答案:火车脚本网
- 全部评论(0)