jae-jae / QueryList

:spider: The progressive PHP crawler framework! 优雅的渐进式PHP采集框架。
https://querylist.cc
2.65k stars 440 forks source link

Can add callback for element #103

Closed edwinhuish closed 4 years ago

edwinhuish commented 4 years ago

rules 的第三个参数可以为string 或者 callback。

jae-jae commented 4 years ago

抱歉无法合并,理由如下:

  1. rules 第四个参数不向下兼容
  2. rules 第三个参数与第四个参数都可以是回调函数,功能上存在冗余,会给使用者带来困扰
  3. 未设置range时的采集结果不向下兼容

新加的outerHTML特性很好,在下个版本我会加上outerHTMLtextshtmls这些特性,应该可以解决你的部分困扰。

edwinhuish commented 4 years ago

第一个确实是需要考虑。不过完全可以作为 V5 版本发布。 第二个功能并不冗余, 一个是 find 后的 Elements, 另外一个是 attr 后的 htmls Collection 第三个忘了你原来的是怎么样的了,没有range的时候是单层数组?如果是这样的话,直接在原有数组后面加多一个 pop 即可。不过我个人比较倾向于同一个函数返回的array结构必须一致。特别是插件,用户有需要可以自己去获取对应层级的。

作为插件,除了一致性,我个人认为效率也是需要考虑的,如果一些进阶处理需要 getData 出来的html 再次封装为 Elements 后再操作,然后再次循环进行操作的话,效率也是一个问题。

另外,range 和 rules 属性其实更应该合并成一个对象,以参数的形式传给 QL,将会比填 array 更直观。也能解决再次调用 QL 的 range 会是上一轮的值的坑。