php+spider+开发文档,configs详解——之field

configs详解——之field

field定义一个抽取项, 一个field可以定义下面这些东西

name给此项数据起个变量名变量名中不能包含.如果抓取到的数据想要以文章或者问答的形式发布到网站(WeCenter,WordPress, Discuz!等), field的命名请参考两个完整demo中的命名, 否则无法发布成功

String类型 不能为空

举个栗子:

给field起了个名字叫contentarray(

'name'=>"content",

'selector'=>"//*[@id='single-next-link']"

)

selector定义抽取规则, 默认使用xpath如果使用其他类型的, 需要指定selector_type

String类型 不能为空

举个栗子:使用xpath来抽取糗事百科的笑话内容,selector的值就是内容的xpatharray(

'name'=>"content",

'selector'=>"//*[@id='single-next-link']"

)

selector_type

抽取规则的类型

枚举类型

栗子1:selector默认使用xpatharray(

'name'=>"content",

'selector'=>"//*[@id='single-next-link']"// xpath抽取规则

)

栗子2:使用正则表达式来抽取数据array(

'name'=>"content",

'selector_type'=>'regex',

'selector'=>'#

([^/]+)
#i'// regex抽取规则

)

required定义该field的值是否必须, 默认false赋值为true的话, 如果该field没有抽取到内容, 该field对应的整条数据都将被丢弃

布尔类型

举个栗子:array(

'name'=>"content",

'selector'=>"//*[@id='single-next-link']",

'required'=>true

)

repeated定义该field抽取到的内容是否是有多项, 默认false赋值为true的话, 无论该field是否真的是有多项, 抽取到的结果都是数组结构

布尔类型

举个栗子:爬取的网页中包含多条评论,所以抽取评论的时候要将repeated赋值为truearray(

'name'=>"comments",

'selector'=>"//*[@id='zh-single-question-page']//a[contains(@class,'zm-item-tag')]",

'repeated'=>true

)

children为此field定义子项子项的定义仍然是一个fields数组没错, 这是一个树形结构

数组类型

举个栗子:抓取糗事百科的评论,每个评论爬取了内容,点赞数array(

'name'=>"article_comments",

'selector'=>"//div[contains(@class,'comments-wrap')]",

'children'=>array(

array(

'name'=>"replay",

'selector'=>"//div[contains(@class,'replay')]",

'repeated'=>true,

),

array(

'name'=>"report",

'selector'=>"//div[contains(@class,'report')]",

'repeated'=>true,

)

)

)

source_type

该field的数据源, 默认从当前的网页中抽取数据选择attached_url可以发起一个新的请求, 然后从请求返回的数据中抽取选择url_context可以从当前网页的url附加数据(点此查看“url附加数据”实例解析)中抽取

枚举类型

attached_url

当source_type设置为attached_url时, 定义新请求的url

String类型

举个栗子:当爬取的网页中某些内容需要异步加载请求时,就需要使用attached_url,比如,抓取知乎回答中的评论部分,就是通过AJAX异步请求的数据array(

'name'=>"comment_id",

'selector'=>"//div/@data-aid",

),

array(

'name'=>"comments",

'source_type'=>'attached_url',

// "comments"是从发送"attached_url"这个异步请求返回的数据中抽取的

// "attachedUrl"支持引用上下文中的抓取到的"field", 这里就引用了上面抓取的"comment_id"

'attached_url'=>"https://www.zhihu.com/r/answers/{comment_id}/comments",

'selector_type'=>'jsonpath'

'selector'=>"$.data",

'repeated => true,

'children' => array(

...

)

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值