- 本项目fork自: https://gitee.com/z812483032/NewsRecommends
- 原作者已不维护,故我这边继续维护修改,有问题提issue,看到会回
网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐
- 权重衰减进行用户兴趣标签权重的衰减,避免内容推荐的过度重复
- 标签推荐进行用户标签与新闻标签的匹配,按照匹配比例进行新闻的推荐
- 区域推荐进行IP区域确定,匹配区域性文章进行推荐
- 热点推荐进行新闻热点的计算的依据是新闻阅读量、新闻评论量、新闻发布时间
涉及框架:Django、jieba、selenium、BeautifulSoup、vue.js
-
安装Python环境
安装包下载:https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe

然后就是各种下一步,安装完就行了,测试安装是否成功就打开CMD
pip --version python --version出现下面的内容就是安装成功了
-
安装Python依赖
Python就一个文件夹"FinalProject"
打开CMD -->
FinalProject(注意此处的路径是我本地的,改成你自己电脑上的即可)执行
pip install -r requirements.txt安装Python项目运行的所需依赖 -
安装NodeJS
下载地址:https://nodejs.org/dist/v16.14.2/node-v16.14.2-x64.msi
一直下一步就完事了
-
安装NodeJS依赖
前端页面分成了两个项目,所以两个项目都需要分别安装依赖
用户端前端:News-Page
打开CMD -->
News-Page(注意此处的路径是我本地的,改成你自己电脑上的即可)执行
npm install安装NodeJS所需依赖管理端前端:vue-admin-template-master
打开CMD -->
vue-admin-template-master(注意此处的路径是我本地的,改成你自己电脑上的即可)执行
npm install安装NodeJS所需依赖注:这个过程很慢,并且有可能因为网络超时导致失败之类的,所以自己多试几次
-
数据库创建/数据导入
数据库使用的是MySQL,没安装的可以下载一个phpstudy(小皮面板)
小皮面板上直接启动MySQL服务就行了
然后就是使用Navicat去连接MySQL服务器
默认账号/密码应该都是 root
然后新建一个news数据库 把目录
FinalProject下的news.sql导入到数据库中 -
项目数据库配置
F:\code\NewsRecommends\FinalProject\newsapi\newsServer\settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'news',
'USER': 'root', // 自己的数据库账号
'PASSWORD': 'root', // 自己的数据库密码
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
F:\code\NewsRecommends\FinalProject\newsapi\Spider\OperationMysql.py
def __init__(self):
self.conn = pymysql.connect(
host='127.0.0.1', # 连接的数据库服务器主机名
port=3306, # 数据库端口号
user='root', # 数据库登录用户名
passwd='root',
db='news', # 数据库名称
charset='utf8', # 连接编码
cursorclass=pymysql.cursors.DictCursor
)到此所有需要安装的东西都安装完了
Django启动
# 打开CMD
cd FinalProject\newsapi
# 注意此处的路径是我本地的,改成你自己电脑上的即可
python manage.py runserver 127.0.0.1:8000前端项目启动
//用户端
cd News-Page
npm run dev
//管理端
cd vue-admin-template-master
npm run serve可以直接看到的是两个页面
客户端:
管理端:
然后爬虫的状态是因为我数据的记录是开着的,所以需要自己手动把数据库里的爬虫和解析器状态都改成关闭
news_api_spiderstate表
status这一列全部改成0
然后再到管理端打开就行了
时间设置的短一些,不然等半天也不会有数据









