V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wly19960911
V2EX  ›  问与答

关于 V2EX 的 app 开发问题,回复内容的存储和解析

  •  
  •   wly19960911 · 2018-12-17 00:38:56 +08:00 · 2082 次点击
    这是一个创建于 2153 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于内容的抓取,我有个疑问就是数据该怎么存更好。

    比如我这这里有个 class

    class Topic extends _TopicModel {
      ...
      String content; // 帖子内容正文
      ...
    }
    

    那么我在抓取的时候有个疑问了,这个回复内容正文抓取之后应该存什么数据,我发现解析的时候就非常不方便,因为 V2EX 的回复内容一种有三种特殊情况 : 换行符、markdown、图片。

    然后我就修改了下。

    enum ContentType {
      text,
      img,
      br
    }
    class _ContentElement {
      ContentType type;
      String content;
    }
    
    class StringContentElement extends _ContentElement {
      StringContentElement(String text) {
        type = ContentType.text;
        content = text;
      }
    }
    
    
    class Topic extends _TopicModel {
      ...
      List<_ContentElement> content; // 帖子内容正文
      ...
    }
    

    但是不管怎么写都感觉别扭了,我就打算停手了,对于这种数据的抓取有什么更好的存储和解析格式吗,我对爬虫也不是很了解。有人可以给我简述下思路吗?

    第 1 条附言  ·  2018-12-17 13:42:05 +08:00

    关于我这个内容,搜索了下,因为我是尝试使用 flutter ,1L给出的意见大概看懂了,直接使用 iOS提供的webView去处理 css 和 html,但是我搜索了下相关的资料,关于webview的问题,flutter能给出的资料非常有限,功能限制也大。

    参考这个文章: https://www.jianshu.com/p/b29222d6ea3a/

    目前如果是要使用webView看起来是必须使用插件了,这个有时间参考下相关的内容,看来需要搁浅下或者重新实现一个固定的解析方式 , 图片、换行符和链接都好处理,但是markdown带来的css估计得一个个处理了。

    6 条回复    2018-12-17 15:05:48 +08:00
    XQBoy
        1
    XQBoy  
       2018-12-17 00:54:53 +08:00 via iPhone   ❤️ 1
    wly19960911
        2
    wly19960911  
    OP
       2018-12-17 01:02:11 +08:00 via Android
    @XQBoy Swift 我就明天看吧,今天太晚了,也没有接触过 Swift,感谢。
    wly19960911
        3
    wly19960911  
    OP
       2018-12-17 13:14:43 +08:00
    @XQBoy #1 看了下,是用 webView 处理的啊,我看看相关资料去。第一次开发移动端 app 很多东西还不懂,而且 flutter 还有很多包不完善。
    wly19960911
        4
    wly19960911  
    OP
       2018-12-17 13:45:20 +08:00
    看来 webView 是 flutter 的一个坑了,html 什么都好解析,富文本类型有点没辙。学习使用的时候还是得注意下别挑富文本内容的网站了
    devjoe
        5
    devjoe  
       2018-12-17 15:01:01 +08:00 via iPhone
    我是一楼链接的开发者,可能有些误区。

    主题的内容是用 Webview 渲染的,回复的内容是解析 html,然后转成原生的富文本。如果回复也用 webview 的话,性能很吃紧。

    还一个方案是整个页面是 webview,自己解析内容然后包装成想要的样式。

    另外官方有提高 API,如果要求不高也可以直接用 API
    wly19960911
        6
    wly19960911  
    OP
       2018-12-17 15:05:48 +08:00
    @devjoe #5 感谢,我是一个前端,所以对移动端处理不熟悉,鉴于我使用的是 flutter,webView 解析这块问题感觉很大。

    大致看了下 swift 还算是看到了处理的过程,也感谢你回复关于 webView 的一些事情。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5151 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 03:48 · PVG 11:48 · LAX 19:48 · JFK 22:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.