博客
关于我
使用python将新闻爬取保存进sqlite数据库并读取输出屏幕
阅读量:746 次
发布时间:2019-03-22

本文共 1029 字,大约阅读时间需要 3 分钟。

系统简介

本系统旨在从指定新闻网站自动抓取新闻内容和相关图片,并将数据存储在SQLite数据库中。用户可以通过菜单驱动式界面进行操作,包括新闻和图片的增删改查。系统采用以下主要技术:

  • 网页抓取:使用Scrapy框架以无痕模式抓取网页内容。
  • 数据库存储:使用SQLite数据库存储新闻文本和图片数据。
  • 图片处理:采用Base64编码存储图片数据,提取图片路径并下载。
  • 自动生成shell脚本:通过脚本自动化操作,减少人工干预。
  • 系统结构

    数据库设计

  • News 表:

    • id:自动递增数值型,作为主键。
    • name:文本型,存储新闻标题。
    • content:文本型,存储新闻正文。
  • Tupian 表:

    • picture:blob型,存储Base64编码后的图片文件。
  • 功能模块

    1. 爬虫模块

    • 方法:
      • get_news:抓取新闻和图片。
    • 工作流程:
    • 建立连接,初始化数据库和表。
    • 发送HTTP请求获取网页内容。
    • 使用正则表达式提取新闻标题、正文和图片路径。
    • pruning重复图片文件并存储Base64编码的图片数据。

    2. 图片处理模块

    • 方法:
      • save_images:将 Base64 码转回图片并存储。
    • 工作流程:
    • Base64 解码。
    • 将图片文件写入本地存储。
    • 删除临时文件,释放内存。

    3. 数据库交互模块

    • 方法:
      • update_database:更新数据库内容。
    • 工作流程:
    • 执行数据库更新语句。
    • 提取新闻标题和图片路径。
    • 根据要求更新对应数据。

    用户交互界面

    系统提供按键式菜单界面,用户可选择操作项包括:

    • 1. 爬取新闻和图片:执行抓取并存储操作。
    • 2. 输出新闻列表:显示数据库中的新闻内容。
    • 3. 输出图片列表:逐个显示并可下载图片文件。
    • 4. 退出系统:退出程序。

    系统优化

    代码层面

  • 紧凑代码结构:
    • 将长代码段分解为多个函数,提高可读性。
  • 提高效率:
    • 使用线程同时下载图片,降低处理延迟。
  • 错误处理:
    • 增加异常捕获机制,确保程序稳定运行。
  • 数据库优化

  • 划分缓存表:
    • 将常用的查询结果缓存到临时表,提高查询效率。
  • 索引优化:
    • 为常用查询字段建立索引,减少查询时间。
  • 内存管理

  • 临时文件清理:
    • 定期清理旧图片和临时文件,释放存储空间。
  • 空闲资源监控:
    • 定期扫描空闲连接,释放资源。
  • 总结

    通过上述优化,本系统能够高效、可靠地完成新闻和图片抓取任务,同时具备良好的用户交互界面和数据库管理功能。如果有具体需求,可以根据实际情况进一步功能扩展和性能优化。

    转载地址:http://gzewk.baihongyu.com/

    你可能感兴趣的文章
    Plotly-Dash:如何过滤具有多个数据框列的仪表板?
    查看>>
    Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
    查看>>
    Plotly:如何从 x 轴删除空日期?
    查看>>
    Plotly:如何从单条迹线制作堆积条形图?
    查看>>
    Plotly:如何以 Root 样式绘制直方图,仅显示直方图的轮廓?
    查看>>
    Plotly:如何使用 Plotly Express 组合散点图和线图?
    查看>>
    Plotly:如何使用 plotly.graph_objects 和 plotly.express 定义图形中的颜色?
    查看>>
    Plotly:如何使用 Python 对绘图对象条形图进行颜色编码?
    查看>>
    Plotly:如何使用 updatemenus 更新一个特定的跟踪?
    查看>>
    Plotly:如何使用长格式或宽格式的 pandas 数据框制作线图?
    查看>>
    Plotly:如何向烛台图添加交易量
    查看>>
    Plotly:如何在 plotly express 中找到趋势线的系数?
    查看>>
    Plotly:如何在桑基图中设置节点位置?
    查看>>
    Plotly:如何处理重叠的颜色条和图例?
    查看>>
    Plotly:如何手动设置 plotly express 散点图中点的颜色?
    查看>>
    Plotly:如何结合 make_subplots() 和 ff.create_distplot()?
    查看>>
    Plotly:如何绘制累积的“步骤“;直方图?
    查看>>
    Quartz进一步学习与使用
    查看>>
    Plotly条形图-根据正/负值更改颜色-python
    查看>>
    PLSQL developer12安装图解
    查看>>