参考项目源码地址:
项目1GitHub - hunter-lee1/guanchazhe_spider: 观察者新闻网爬虫(新闻爬虫),基于python+Flask+Echarts,实现首页与更多新闻页面爬取(Requests+etree+Xpath)+新闻存储(MySQL)+文本分析(Jieba)+可视化(新闻词云,词频统计)。
由于原作者没有给出requirement文件,库就自己手动添加了
可以选择需要的版本(不选默认最新),点击Install Package,等待安装完成即可数据库的连接:在app.py84行,找到并修改成自己数据库的账号密码
同样的修改spider_modul.py25行,useful_functions.py7行,word_cloud.py13行
下面将guanchazhe.sql导入数据库,我的数据库版本是5.7,用的navicat进行导入:
新建数据库news_with_keyword,字符集选择utf8,右键运行sql文件
这里遇到第一个bug,导入文件会失败,找了很多方法,本来以为是版本问题,但是新建了sql文件将数据复制进来再导入就莫名成功了,不知道是什么情况。
app.py中第8行的代码本来被注释了,取消才能爬取最新的新闻
运行app.py,点链接就可进入网站
观察者网新闻数据可视化
这里用的python版本为3.6,头铁试过了3.10是不能运行的,Django的库不支持3.10,据说3.9可以,后面再试。
原作者给出了requirement文件,所以只需要在终端执行文件即可
pip install -r requirement.txt
但是因为网络的原因,总会遇到几个报错的,所以建议还是手动加库,方法同项目1的部署
ModuleNotFoundError: No module named 'MySQLdb'
解决办法:项目主mysite的__init__.py文件夹中添加代码:
import pymysql
pymysql.install_as_MySQLdb()
数据库的连接:在项目的mysite文件夹下打开settings.py,80~90行修改成自己的数据库信息即可,对了别忘了在数据库中加一个名为mysite的数据库。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE':'django.db.backends.mysql', # 数据库类型,mysql
'NAME':'mysite', # database名
'USER':'root', # 登录用户
'PASSWORD':'sise', # 登录用户名
'HOST':'127.0.0.1', # 数据库地址
'PORT':'3306' # 数据库端口
}
在终端按序运行以下几行代码:
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
最后执行:
python manage.py runserver 127.0.0.1:8000
注册界面的邮箱确认码需要自己在邮箱中开启服务,这里以qq邮箱为例,登陆后点击设置—账户
点击pop3/smtp服务的开启,短信验证后你会得到一串 授权码
在settings.py的第139和140行分别输入自己的邮箱和授权码,即可完成邮箱确认服务。