需求背景:一名未知名的大神想要在上班时间看看小说摸摸鱼等,大神给我的消息就是下图:让我实现类似爬虫的功能,现在实现后总结一下。

——

 

 原文链接打开后有大量的广告以及不需要的信息:https://www.xxbiqudu.com/79_79638/152239434.html

分析链接:https://m.xxbiqudu.com就是应该网站的域名,79_79638应该就是书籍的编号   152232829 应该就是当前书籍的页码,大神应该是读到这一页了。

首先在psotman上进行测试:

 

 

下面就需求分析完毕后开始思考:在postman上打开连接看到 这个<div id = “content”>xxxx.........</div>里面应该就是咱们想要的核心内容了。

 如果用Python来写,可能几行代码就解决了。

爬虫本质就是读取url,然后解析url => 进行清理=> 回传显示,,接下来思考了一下 ABAP中,cl_http_client / request / response应该就可以实现该需求。

然后就开始操刀,事务码SICF :新建服务路径和处理器:

 

 

接下来:转到事务码:SE24,写处理器的逻辑,继承IF_HTTP_EXTENSION接口,重定义 方法:IF_HTTP_EXTENSION~HANDLE_REQUEST 

 

 

按照一般思路先测试连通性,发现:

 

 

居然报证书问题:SSL Peer Certificate Untrusted

那就安装证书吧,百度一下如何在SAP安装证书: https://blog.csdn.net/u014535256/article/details/111147691

等证书安装完毕,再进行配合postman解析

发现可以读取到大致内容了:

居然乱码了,GBK???

好吧GBK转UTF-8,尝试了好几种办法,

只有:DATA(lv_xstr= lo_http_client->response->get_data). 先读取成二进制,然后再使用二进制转utf-8才可以,

而使用DATA(lv_str= lo_http_client->response->get_cdata).读取到的字符是乱码的,自己可尝试

接下啦读取到报文后,就可以进行解析了元素了。

现在当前元素可以解析到,但也不能仅仅读取一页吧,那还需要进行翻页,上一页和下一页呢。

首先解析上一页和下一页的页码:

 

 

ABAP代码里通过字符长度的截取就可以获取完整的url,具体的截取方法可以参考本Bolog中的附件代码。

最后再加一个阅读进度,将当前阅读的页码存到表里,下次再打开时,就可以从当前页打开了(至于需不需要区分用户名,会员,等等记录状态,等别人没送Lv Shi Han再说吧)

对于新手来讲,不妨自己练手试一试,暂时不参考该源码呢。

最后上代码:https://files.cnblogs.com/files/1187163927ch/ZCHENHUI003.zip

解压密码:1187163927

需要详细代码和技术交流的可以加QQ:1187163827