互联网加工作小结

起因

腾飞杯虽然得到了电子信息赛道的特奖,但是对于我个人来说还是有一些遗憾,对项目也是很不舍得,希望能做到更好!

这里展示一下自己所作的内容,其中部分源代码暂时不能开发,等评奖结束后可以开源,目前包括csdn异步http和异步mysql爬虫,哔哩哔哩批量视频爬虫等。

开工前的期望

后端和爬虫

  1. 爬取的范围更为广阔,搜索撸棒性更强。
  2. 保留原文格式,方便读者阅读。

前端

  1. 晃动问题,不能让所有节点完全离开界面,不能让用户找不到节点的位置,这个是腾飞杯版本的最难受的地方。

驱动

  1. 模式切换问题,切换操作过于复杂。

总工作量

  1. 前期图书馆预约和维持脚本,并尝试团队维持脚本,虽然最后由于稳定性原因没有推广。
  2. 新版数据库设计,关系表和内容表分离,提高效率。
  3. 配合小明的爬虫写了一套异步数据库接口,和小明的异步http爬虫配合不错,最终分四天大致上完全部数据。
  4. 提供少量python的数据库调试接口,这个比较简略。
  5. 完善后端java中socket和前端通信部分,升级为新版数据库所对应的版本,目录升级为二级目录,内容更为丰富。
  6. 调试前端,debug。
  7. 节点关系表存储设计和接口。

部分后端的AI推荐算法相关工作等待若哥和钱龙完成,我这里使用random代替。

新版爬虫数据系统设计_v2

搜索正文存储表 spyder_main_table

id keyword link tittle abstract content child_len value
int char 50 char 100 char 200 TEXT TEXT int int
主键 搜索的关键词 本文连接 文章标题 内容摘要(第一轮的摘要在搜索界面存储) 内容全文 子链接的总个数 节点权重价值,目前没有使用

搜索内容表 t_spyder_main_content

id content
主键 内容

子链接存储表 spyder_child_table

id parent_link link tittle abstract content child_len value
int char 100 char 200 char 200 TEXT TEXT int int
主键 父连接地址,作为搜索子链接的索引 当前连接 当前连接标题 当前链接摘要(之后的摘要在父文末就有,展开连接后存储新的连接内容) 当前连接内容 子链接数目 权重

推荐内容表 t_spyder_child_content

id content
主键 内容

评论存储表 t_spyder_comment_table

link target nick_name write_time content value
char 200 char 200 TEXT datetime TEXT int
链接 回复的用户昵称,如果没有回复,就存博客链接 用户昵称 评论时间 评论内容 评分

主菜单表,从大keyword映射到小keyword t_spyder_menu

main_keyword keyword
主菜单节点 子keyword

视频url映射表 t_spyder_url

keyword url
关键词 视频地址

预估搜索子链接,广搜,深度三轮左右,两轮也行。如果当前连接是最后一轮,child_len为0.

子链接存储的数据结构

爬虫设计思路:

  1. 每次get新的连接,在当前索引中存储当前连接的内容,和子链接的数目,然后根据页面的索引,去子链接的表里面存储,当前页面可以存子链接的标题和摘要,展开子链接内容后存子链接的content。

  2. 可以递归爬取三层子链接

  3. 子链接需要检验重复,就连接编号不能一致,可能会用到ignore

  4. ignore查重可能会导致不公平性,比如第一个搜索的节点没有重复内容,第二个就会出现重复内容,最后一个可能百分之七八十都是重复的,效率很低,关联方法可以优化。

关于爬虫想到的两个问题:

  1. 子节点不均衡的问题,(目前想到的办法是设置上限,或者设计多对多的关系,感觉怪怪的)

  2. 优秀博客筛选:
    内容长度大于一定限制
    标题不能含有特殊标签
    内容,标题,阅读量和发表时间。

bilibili视频爬虫

视频爬虫,哔哩哔哩,两个问题,一个是总存储量,即爬不爬第二页,第二个是弹幕,可以爬.

使用阿里云存储对象,

关键词表单

[‘C语言学习’,‘java学习’,‘python’,‘机器学习’,‘Kubernetes’,‘前端’,‘计算机网络’]
[‘C语言指针’,‘C语言结构体’,‘C语言数组’,‘C函数’,‘C语言标准库’,‘C语言算法’,‘C语言内存管理’,‘C语言字符串’,‘C语言实例’,‘C语言错误处理’,‘java数据结构’,‘Java排序算法’,‘java注解’,‘java基础’,‘jvm’,‘java框架’,‘数据库基础’,‘java高并发’,‘java泛型’,‘java反射’,‘python基础’,‘python面向对象’,‘python异步’,‘python文件系统’,‘python异常处理’,‘python数据科学’,‘pythonweb库’,‘python爬虫’,‘python机器学习’,‘python图像处理’,‘计算机视觉’,‘自然语言处理’,‘社会网络分析’,‘推荐算法’,‘数据挖掘’,‘模型诊断’,‘强化学习’,‘模型融合’,‘搜索引擎’,‘统计学习方法’,‘kubernetes环境’,‘kubernetes基础概念’,‘kubernetes基本架构’,‘kubernetes基本调度流程’,‘kubernetes API’,‘kubernetes Master’,‘kubernetes扩展’,‘kubebuilder’,‘kubernetes存储’,‘kubectl’,‘Ajax’,‘HTML’,‘CSS’,‘JavaScript’,‘Dom’,‘HTML5’,‘VUE’,‘React’,‘Angular’,‘jQuery’,‘物理层’,‘数据链路层’,‘网络层’,‘传输层’,‘应用层’,‘网络安全’,‘无线网路’,‘HTTP协议’,‘TCP’,‘DNS’,‘数字认证’]

socket通信

这里的思路是让java后端和python代码隔离,交互只能通过数据库,否则日后维护将更加困难
get_menu这里,必须维护一个手动版的初始节点

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2023 galaxy
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信