请教一个做爬虫来爬取论坛帖子多层楼的问题。
之前做了一个简单爬取某招聘网站上的招工信息的爬虫,初步了解了如何用浏览器查看请求头、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 指教,或者说一下已有的案例链接。谢谢。
之前做了一个简单爬取某招聘网站上的招工信息的爬虫,初步了解了如何用浏览器查看请求头、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 指教,或者说一下已有的案例链接。谢谢。