爬取公主连结Re:Dive官方动态

公主连结 Re:dive QQ bot 项目概述

游戏资讯QQbot,涉及到了很多关于爬虫,接口,Json,SQL数据库,Java Spring,Maven,GitLab的使用和小知识点。

零散的知识

  1. git MERGING 状态解决

    git reset --hard head
    # 回退到上一步
    
  2. .msi是二进制安装文件

  3. 日志文件重定向,spring的配置文件

  4. .xml或.yml这类文件是配置文件,也就是可以被编程语言识别的东西

  5. git的两种clone方式:

    • HTTP
    • SSH
  6. 前端调用controller。然后controller处理请求。再调用service处理业务逻辑。

    • 现在基本上所有的互联网公司。都是这么个结构(贫血模型)。
    • 前后端分离。前端发出请求。
    • 前端的请求到controller中。
    • 由controller处理请求并响应。
    • 由service处理业务。
    • 由dao进行数据交互进行分层开发。
  7. 相较于VS Code,typora更加简洁,就图片插入和一些markdown设定而言更加快捷。

  8. 在WWW上每一条信息都有唯一网络地址,这就是URL

Gitlab 详细信息

git私有仓库,采用apache协议,优质开源,且具有较高的保密性。

URLaccountpassword
http://***.***.**.***:****/XXXXXXXX@XXX.comXXXXXXX

Git忽略文件

  1. git忽略文件的两种方法:一种是完全不,一种是停止更新。

    # 标记文件,该文件后续的变化都不会更新到index tree
    git update-index --assume-unchanged [filename]
    
    # 恢复对文件的版本控制
    git update-index --no-assume-unchanged [filename]
    
  2. gitignore的注意点一定不要忘记,在新加入了不想提交的内容时一定要清缓存

    # 最后的一个“.”不要忘了
    git rm -r --cached .
    
  3. gitignore是把双刃剑,尤其是在切分支的时候,一定要把gitignore里没有被track的文件备份一份

链接MySQL

  1. “dbc:mysql:” 需要服务器地址 + 库名 + 用户名 + 密码 + tomcat/http接口的端口

    • 地址:<XXXXXXXXXXXXXXXXXXX.com>
    • 当然具体的语法还是需要更加深入的学习和记忆。
    库名用户名密码port
    nameuserNamepassword4-digit port
  2. 直接连结数据库的时候使用的是数据库端口

    • 对于MySQL,默认端口port为:3306

动态爬虫

对象网页:
爬取网页:https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid=353840826

思路

就是一般的思路,没有特殊的地方

  1. 获取网页HTML
  2. 通过formatFilter筛出需要的信息
  3. 整理成单一String格式
  4. 输出动态信息

过程

  1. 获取网页HTML/Json
    • 使用HttpURLConnection类库

    • URL.getcontent 方法返回的是URL的信息,不是对应网站的内容

  • java API一定要看好哪些是abstract,哪些是可以用的

    //最短解决方法
    String pageContent = IOUtils.toString(URI.create("[urlAddress]"));
    
  1. 筛出需要的信息

    • Jackson 包的使用更加简介高效,替代JsonParser(JsonObject 包)

      ObjectMapper objectMapper = new ObjectMapper();
      try {
         JsonNode node = objectMapper.readValue(pageContent, JsonNode.class);
         //就使用get get get 就行
         JsonNode brandNode = node.get("data").get("cards").get(0).get("card");
         String theCard = brandNode.asText();
      } catch (IOException e) {
         e.printStackTrace();
      }
      
    • 这个用正则表达式实现内容提取

      //设置正则表达式
      Pattern pattern = Pattern.compile("description.*category");
      Matcher dataMatcher = pattern.matcher(bilibiliCardContent);
      //一定要有dataMatcher.find()这一步,可以使用while来不停的截取
      if (dataMatcher.find()) {
         messageTemp = dataMatcher.group();
      } else {
         messageTemp = "没有哦";
      }
      int messageLength = messageTemp.length();
      //截取真正的内容(因为有pattern的问题)
      BilibiliCardUnicodeContent = messageTemp.substring(14, messageLength - 11);
      
    • JsonParser 已经被标注@deprecated

    • JaonParser 直接调用静态的方法就OK

      //创建jsonObject对象
      String pageContent = "XXXXXXX"
      JsonObject json = (JsonObject) JsonParser.parseString(pageContent);  
      
  2. 整理成单一String格式

    • Unicode(16进制)文本转换

      • Unicode2String文章链接

      • 使用到的知识:

        Pattern(视情况而定)Integer
        \\u[a-f0-9A-F]{1,4}parseInt(String hexCode, 16)
    • replaceAll(regex,string) 返回一个修改后的string,而不是在原来的文本上修改

    • 明文换行符就是显示:\n

  3. 输出动态信息


博主简介:
座右铭:始于兴趣,源于热爱,成于投入。
爱丁堡大学 人工智能专业。热爱读书和写作,虽然写得不好但还会一直写。喜爱电音的渣渣音乐家,手不是很残的业余画手,有点热心过头的朋友。
所有文章都在个人博客上:discover304.top
也有一些在 CSDN 上:discover304
公众号:白泽百泽(注:内容和博客是一样的)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白拾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值