V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
crella
V2EX  ›  程序员

做爬虫来爬取论坛帖子多层楼的问题

  •  
  •   crella · 2019-12-25 22:53:28 +08:00 via Android · 969 次点击
    这是一个创建于 1813 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教一个做爬虫来爬取论坛帖子多层楼的问题。

    之前做了一个简单爬取某招聘网站上的招工信息的爬虫,初步了解了如何用浏览器查看请求头、curl 基本命令、sqlite 语句和事务。

    现在出于兴趣,想爬取某社区的热点帖子。特点:

    1、只收录文字信息和 html 代码,不收录图片等媒体。打算用 sqlite 应付一下,也愿意用 postgresql。

    2、不少帖子讨论敏感话题,经常被删帖、删楼,或者楼主或层主更改已有的回复。我希望我的爬虫能自动比对每层楼的文字,当回复被更改时,存储旧的回复和新的回复。不知道应该怎样设计数据库的表结构。

    3、对于去除重复记录的问题。

    在之前那个关于招工信息的爬虫,我设定的逻辑是:对于新爬取完的存在一个数组里面的多条信息(现在基本是一次爬取 6 万条),逐条在 sql 里面 select where,检查返回的结果是否为空。若不为空,则把这条信息标记为待更新,存进另一个数组。完成上面的检查后,打开 sql 事务,对上面所有待更新的信息执行 sql 相关的 update where 语句,然后提交 sql 事务。

    这个处理流程可以改善吗?比如打开 sql 事务,先 select where 完所有要检查的信息,比对完之后存进新数组,再提交 sql 事务。然后打开 sql 事务,update where 所有新信息,再提交 sql 事务。这样是否可行呢?因为对在脚本里面一次性执行多个 sql 语句不是很放心。

    请各位 58 指教,或者说一下已有的案例链接。谢谢。
    crella
        1
    crella  
    OP
       2019-12-25 23:15:53 +08:00
    突然明白了,数据库表格的每个列存 json,然后 json 套 json,就好了……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3328 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:31 · PVG 18:31 · LAX 02:31 · JFK 05:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.