打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
极光自定义站源教程

前段时间上线了自定义站源功能,不过因为比较粗糙,就没有公布教程,然后经过一段时间打磨后,感觉比之前版本要好用很多,于是整理了下使用教程,帮助大家快速上手。

原理:基于对html文档元素的解析,采用jsoup,jsoupXpath等框架,调用其提供的获取html元素的API,来解析网页元素,为我们所用。当我们编写完这段规则,其实我们已经写出一个完整的爬虫了。

自定义片源功能模块借鉴于开源项目“阅读”,大部分语法可以通用,也可能遇到相同的问题。

相关资料链接:

  • 相关语法及坑点:https://github.com/mabDc/cartoon-rule/blob/master/RuleSupport.md

语法规则测试:

  • jsoup语法测试 https://try.jsoup.org

  • JSonPath语法测试 http://jsonpath.herokuapp.com

- 支持jsoup select语法,以@css:开头,语法见http://www.open-open.com/jsoup/selector-syntax.htm- 支持XPath语法,采用的这个库https://github.com/zhegexiaohuozi/JsoupXpath, 语法兼容方面请看自己查看- 支持JSonPath语法,以@JSon:开头,语法见 https://blog.csdn.net/koflance/article/details/63262484- JsonPath获取字符支持此种写法xxx{$._id}yyy{$.chapter}zzz- 支持用js处理结果,以<js>开头</js>结尾,结果变量为result,网址变量为bastPath,位置任意,按顺序执行 如 @JSon:$.link<js>'http://chapterup.zhuishushenqi.com/chapter/' + encodeURIComponent(result)'</js><js>result=result.replace(/[\\w\\W]*url:'(.*?)'[\\w\\W]*/,\'$1\'); java.ajax(result)</js>class.panel-body content-body content-ext.0@html- ##替换内容##替换为,支持正则- 可以用@put:{key:rule, key:ruel}保存变量其它地方使用,key为变量名, rule为完整的规则- 可以用@get:{key}获取变量,key为变量名- 解析规则时会先@put变量,然后,@get变量,替换@get:{key}- 可以使用@Header:{key:value,key:value}定义访问头,添加在Url规则头部,或尾部- 除去封面地址,其它地址都支持搜索地址的表达方式- 自定义js方法//获取网页内容,url支持搜索url规则java.ajax(url)//base64解码java.base64Decoder(string)//设置需解析的内容Objectjava.setContent(html)//输入规则String获取文本列表List<String>java.getStringList(rule)//输入规则String获取文本java.getString(rule)//输入规则获取节点列表List<Object>java.getElements(ruleStr)

简单片源规则说明

  • 片源规则基于HTML标记,如class,id,tag等

  • 想要写规则先要打开网页源代码,在里面找到想要获取内容对应的标签,

  • Chrome可以在网页上右击点击检查可以方便的查看标签

极光影院规则示范及字段说明:

{    'searchActor': 'class.detail@tag.p.1@text',    'searchArea': 'class.detail@tag.p.2@text##地区:(.*)年份:##$1###',    'searchDesc': 'class.detail@tag.p.3@text',    'searchDirector': 'class.detail@tag.p.0@text',    'searchImg': 'tag.a.0@data-original',    'searchList': 'class.container@class.col-lg-wide-75@class.stui-pannel_bd@tag.ul@tag.li',    'searchName': 'class.detail@tag.h3@tag.a@text',    'searchNoteUrl': 'tag.a.0@href',    'searchRemark': 'tag.a.0@tag.span.1@text',    'searchUrl': 'https://www.wuguiyy.com/search/searchKey----------searchPage---',    'searchYear''class.detail@tag.p.2@text##年份:(.*)##$1###',    'httpHeader': '',    'httpUserAgent': '',    'loginUrl': '',    'detailActor': '',    'detailArea': '',    'detailDesc': 'class.detail-sketch@text',    'detailDirector': '',    'detailRemark': '',    'detailYear': '',    'enable': false,    'enableFind': false,    'exclude': 'https://g.shumafen.cn/api/file/3e10b917f6921065/',    'findActor': '',    'findArea': '',    'findDesc': '',    'findDirector': '',    'findImg': '',    'findList': '',    'findName': '',    'findNoteUrl': '',    'findRemark': '',    'findUrl': '',    'findYear''',    'parserType': '4',    'parserUrl': '',    'play': '',    'playList': 'tag.li',    'playName': 'tag.a@text',    'playUrl': 'tag.a@href<js>'https://www.wuguiyy.com' + result<\/js>',    'serialNumber': 0,    'sortName': 'tag.h3@text',    'sortNameList': 'class.playlist@class.stui-pannel__head',    'sortUrlList': 'class.stui-content__playlist',    'sourceGroup': '',    'sourceName': '乌龟影院',    'sourceType': '',    'sourceUrl': 'https://www.wuguiyy.com',    'weight': 0}

以上是乌龟影院的完整规则代码,目前极光只支持用规则来搜索影片,暂时不支持规则来显示影片分类列表,不过以后会逐步添加支持。

这里,我们参考乌龟影院的规则,简单介绍一下。

sourceUrl是片源网站的域名,必填,用于识别片源和解析播放时用。

sourceName 是片源网站的名称,必填,且不要与已有片源名称重复。

sourceGroup预留字段,可不填,今后可用于对资源分组整理用。

weight 权重,预留字段,可不填,今后可用于搜索结果排序,靠前显示权重大的片源。

exclude 过滤地址,一些资源播放解析后第一个地址是不能要的,要在这个字段过滤掉。

parserType 解析类型,目前内置4种解析类型:

类型通过下拉菜单选择即可。

目前的规则只支持搜索,主要流程为:搜索影片关键词->获取搜索结果->获取每个搜索结果的详情页面,下面对主要字段说明一下。

以search开头的字段,均是与搜索流程相关的字段。

例如:搜索关键词需要先有搜索接口地址:

'searchUrl': 'https://www.wuguiyy.com/search/searchKey----------searchPage---',

以detail开头为详情页解析,就点击搜索结果进入的详情页面。

例如:detail_desc,影片简介。其中,class定位元素所在位置,@text为获取文本。

'detailDesc': 'class.detail-sketch@text',

以play开头为播放地址解析,playList获取播放列表。playName获取播放剧集的名称,playUrl获取播放剧集的播放地址。sortName是播放线路名称,sortNameList是播放线路列表。sortUrlList是播放线路地址。

在编辑器页面,我们可以选择对单条规则执行结果进行调试:

在规则文本不为空的时候会显示调试按钮,点击调试:

输入搜索关键词,点击run按钮,可以看到规则执行日志,上图是乌龟影院完整规则的调试日志,可以执行到底,并显示各个规则获取的结果,如果你只写了一半,那也可以查看执行到所写规则的位置。下面的编辑框可以修改当前规则,并支持实时更新到调试器里。点击重置可以恢复第一次打开调试窗口时的内容。

其他不再一一列举了,主要步骤就是,用class、id、tag这类定位符找到元素所在位置,提取元素文本。由于算法部分直接改编自阅读项目,所以阅读的规则大部分特性都是支持的,例如支持js,还有支持jsoup和xpath混合解析,就是说,如果你对jsoup的解析不太满意,也可以使用xpath的语法,软件内部可以自动识别并解析,之前我写scrapy爬虫时用的就是xpath,蛮好用的,有兴趣的也可以学习一下。

先写这么些,更详细的随后陆续更新。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
BootstrapValidator超详细教程
最近用htmlunit做网络爬虫 遇到拿不到初始化js加载的数据的问题 最近解决了 写个简单的例子
小谈Jsoup 选择器查找方法
使用 jsoup 对 HTML 文档进行解析和操作
PHP实现IOS极光推送自定义副标题方法和指定跳转页面
Uncaught SyntaxError: Unexpected token '=' and document.querySelectorAll ???
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服