zoukankan      html  css  js  c++  java
  • ABAP 实现类似Python 爬虫,实现ABAP摸鱼

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

    ——

     原文链接打开后有大量的广告以及不需要的信息: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

    欢迎访问我的博客! http://www.cnblogs.com/1187163927ch/
  • 相关阅读:
    数组练习1
    学习进度04
    求一个数组的最大子数组之和02
    求一个数组的最大子数组之和01
    学习进度03
    四则运算的功能添加版02
    第二周学习进度
    Right-BICEP 测试四则运算程序
    实现四则运算的功能添加版01
    本周实验PSP0 过程文档
  • 原文地址:https://www.cnblogs.com/1187163927ch/p/15735499.html
Copyright © 2011-2022 走看看