| 正在上传…重新上传取消正在上传…重新上传取消 |
摘 要
随着互联网的迅速发展,互联网大大提升了信息的产生和传播速度,网络上每天都会产生大量的内容,如何高效地 从这些杂乱无章的内容中发现并采集所需的信息显得越来越重要。网络中的新闻内容也一样,新闻分布在不同的网 站上,而且存在重复的内容,我们往往只关心其中的一部分新闻,网络中的新闻页面往往还充斥着大量许多与新闻 不相关的信息,影响了我们的阅读效率和阅读体验,如何更加方便及时并高效地获取我们所关心的新闻内容,本系 统能够帮我们做到这一点。本系统利用网络爬虫我们可以做到对网络上的新闻网站进行定时定向的分析和采集,然 后把采集到的数据进行去重,分类等操作后存入数据库,最后提供个性化的新闻订阅服务。考虑了如何应对网站的 反爬虫策略,避免被网站封锁爬虫。在具体实现上会使用Python配合scrapy等框架来编写爬虫,采用特定的内容抽取算法来提取目标数据,最后使用Django加上weui来提供新闻订阅后台和新闻内容展示页,使用微信向用户推 送信息。用户可以通过本系统订阅指定关键字,当爬虫系统爬取到了含有指定关键字的内容时会把新闻推送给用 户。
[
Python是一种面向对象、解释型的计算机程序编程语言。它包含了一个功能强大并且完备的标准库,能够轻松完 成很多常见的任务。它的语法比较简单,与其它大多数程序设计语言使用大括号把函数体包起来不一样,它通过缩 进来定义语句块。[4]使用P帅on能够高效灵活地实现开发的任务,内置库以及大量的第三方库能够在许多地方避免 重复造轮子的现象,有时使用c++语言来实现的一个功能可能需要几十行,Python只需要几行就足够了。与传统 的脚本语言相比,Python拥有更佳的可读性和可维护性。这门语言的强大吸引到了许多开发者,拥有比较热门的
Python社区,许多开发者在维护着这种Python编写的库,影响力也在日益增强。在网络爬虫领域,Python这门语言的使用也比较广泛,留下了大量的前人的学习研究的资料。基于以上优点,我选择了使用Python来开发本系统 的网络爬虫部分和展示部分的服务端。
-
-
- Scrapy框架介绍
-
Scrapy是一个纯Python基于Twisted实现的爬虫框架,用户只需要定制开发几个模块就可以方便地实现一个爬虫, 用来抓取网页内容、图片、视频等。它最初是为了网站页面抓取所设计的,也可以应用在获取网络应用API所返回 的各类数据或者是编写通用的网络爬虫。Scrapy用途比较广泛,可以应用于数据挖掘、自动化测试和数据监控等场 景。Scrapy提供了一些网络爬虫中比较通用的中间件和模块等,也可以方便地编写自己所需的中间件来对爬取结果 进行处理,只要在配置里面引用这些中间件就可以了。使用Scrpay来编写爬虫可以降低很多需要重复编写的爬虫处 理代码所带来的成本。
-
-
- Django框架介绍
-
Django是最早由Python实现的最着名的Web框架之一,最初是由美国芝加哥的Python用户组来开发的,拥有新闻行业背景的Adrian Holovaty是Django 框架的主要开发人员之一。在Adrian的领导下,Django团队致力于为Web 开发人员提供一个高效和完美的Python开发框架,并授权开发人员根据BSD开源协议许可证免费访问。Django是一个高效的Web框架,可以帮助我们减少重复的代码,并把更多重点放在Web应用程序上的关键之处。在架构上,
Django 跟Scrapy类似,也提供了中间件等,配置的方式也是类似的,使用类似的技术架构可以减少学习成本。本系统中我选用Django作为新闻订阅的服务端来提供API。
-
-
- MongoDB数据库介绍
-
MongoDB是一个由C++语言编写的高性能,无模型的开源文档型数据库,是当前NoSQL数据库产品中最具有代表性的一种。MongoDB是使用文档来作为对象存储的,一条记录对应一个文档,集合类似传统的关系型数据库中的 表,集合中存放的是那些具有同一特征或者属性的文档。在一个集合中,不同文档拥有的属性可以是不同的,这就 是与传统的关系型的数据库的重点了,传统的关系型数据库要求表里的数据所拥有的属性格式都是一致的,
MongoDB这种灵活性更利于文档映射到一个对象或一个实体上。对于需要经常改动数据格式或者数据格式不定的 一些需求来讲,这种数据格式更为合适。MongoDB在读写性能方面也远超传统的关系型数据库的代表之一的
MySQL。在本系统中我使用MongoDB 来存储爬取到的数据以及用户数据等。像MongoDB这样的非关系型数据库更合适储存爬虫数据,因为爬虫数据量可能比较大,数据之间关系型也不强。 MongoDB的性能也比传统的关系型数据库代表MySQL之类要强。
-
-
- A JAX介绍
-
AJAX(异步的JavaScript + XML)本身并不是一种技术,它是由Jesse James Garrett在2005年提出的一个术语,描述了一种需要结合使用大量已经存在的技术的方式,包括HTML, JavaScript, CSS, DOM, JSON, XML等,还有最重要
JavaScript中的的XMLHttpRequest对象。当这些技术以AJAX模型的方式聚合时,Web应用程序可以更迅速地,无 需加载整个页面就能更新全部或者部分的用户界面。这使Web应用能够更快地响应用户行为,带来更友好的用户体 验。尽管在AJAX中X代表XML,但现在JSON使用的更多,因为JSON具有许多XML不具备的优势,比如它更轻量并且是JavaScript的一部分,各个程序语言都能够轻松解析JSON格式的数据。在AJAX模型中,JSON和XML的作用都是承载信息。[6]本系统会在新闻订阅和展示部分的前端使用AJAX来跟服务端进行交互,以达到前后端分离的目
的。
有需要项目源码的加v-TomJerry2506



