python官网 中文版 新闻-小伙Python爬虫并自制新闻网站,太好玩了

342fcf96-38dc-46db-a310-94ccc28438e7.png

作者:豆腐

来源:凹凸数据

大家好,我又来了,我是银牌厨师豆腐!

我们总是在爬啊爬,爬到了数据难道只是为了做一个词云吗?

cba871ab-0d37-4892-9499-5d0e86c208d9.png

当然不!这次我就利用flask为大家呈现一道小菜。

Flask是python中一个轻量级web框架,相对于其他web框架来说简单,适合小白练手。使用Flask+爬虫,教大家如何实时展示自己爬下来的数据到网页上。

先给大家展示一下这个丑丑的网页 ↓

(给个面子,别笑

a9067f0a-e55e-406a-ba5c-714fbd451c64.png

8eb5e1a5-a2bb-457b-9be7-689018a6c317.gif

演示三个功能

整个流程就是简单的三步:

爬取数据

利用实时爬取数据生成词云

利用热点推荐新闻

爬虫部分:

这次爬虫主要利用多线程方式爬取新浪新闻+网易新闻所有栏目新闻信息。

一共14个栏目,两个网站的页面信息都是通过ajax加载完成的,请求对应的栏目链接后,返回的字符串是这样的,仔细观察会发现我们要看的新闻内容被包含在data_callback里面

b3154f25-f96a-4de2-b0e3-9fa2f347df05.jpg

图2

是一个列表样式,

这时候我们就可以用eval函数将这个字符串处理成一个列表格式

def get_wy_teach():

url = 'https://tech.163.com/special/00097UHL/tech_datalist.js?callback=data_callback'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'

}

res = requests.get(url=url, headers=headers)

# print(res.text)

data = res.text

data = eval(data.replace('data_callback(','').replace(data[-1],""))

然后下面就可以循环提取出新闻内容了,最后一步就是存储到我们的mysql数据库中

当我们建立好14个栏目的爬虫后,再来编写一个主文件main,利用简单的多线程方法启动14个文件并行爬取14个栏目的新闻

def multi_thread():

t1 = threading.Thread(target=xzg)

t2 = threading.Thread(target=xz)

#......

t13 = threading.Thread(target=wy_hua)

t14 = threading.Thread(target=wy_chn)

t1.start()

t2.start()

#......

t13.start()

t14.start()

对了,爬虫之后我们还是做了词云的,哈哈哈

点击生成今日热点新闻词云,静待片刻

4636fa0a-3469-4328-9c55-6cbd47585f81.png

今日热点词汇

flask部分:

辅材处理完成,现在我们开始做主菜部分。

from flask import Flask,render_template,request

#注册创建app应用,_name_是python预定义变量

app = Flask(__name__)

#跨域请求cors

from flask_cors import CORS

CORS(app, resources=r'/*')

#启动爬虫页

@app.route('/test', methods=['GET'])

def mytest():

main.multi_thread()

time.sleep(10)

return '爬取完成~'

if __name__ == '__main__':

app.run(debug=True,port=5000)

render_template

, 用于渲染我们的h5页面

app = Flask(__name__)

,这个是flask的必写项,必须先定义模块名,用于设置路由路径(转接4)

cors

跨域请求,一般用于ajax请求,

CORS(app, resources=r'/*')

定义app路由中所有路径都适用于跨域请求

@app.route('/test')

,当你想使用mytest功能时候,设置了/test作用该函数的访问路径。例:http://49.233.23.230:5000/test

app.run(debug=True,port=5000)

,最后就是指定监听地址端口为 5000,

debug=True

是调试环境,用于生产环境时可更改为Flase。

这样一个个小小的Flask页面接口就完成了

接口写好了,下面我们来搞个h5页面,我们首先来建立一个简单hmtl文件(举例新闻推荐页面)

Title

我们将从数据库中获取到的数据传入到h5文件

#新闻推荐

@app.route('/news')

def news_list():

data = get_mysql()

return render_template('index4.html', data=data)

复制粘贴20个li方便大家理解我设置今日推荐新闻条数是20条,

你也可以通过自己喜爱算法从数据库选择20条新闻推送的网页

5a1853cf-2425-4e88-877f-b5f3369fa588.gif

刷新新闻与查看新闻

到这,一个简陋的 Flask 网站就完成了,是不是很简单。

Flask 是个小巧、灵活的web框架,可以让自己决定定制哪些功能,灵活定制组件,非常适用于小型网站。

结语:(网站想要漂亮,还是要学一下h5,别学我)

d7e9f659-b3a4-4a72-bed9-e0e4acb886a6.png

如果大家想要试试我们的演示网站,或者对源码感兴趣,可以扫描下方二维码,回复“新闻”即可获得

ee1f5dd1-f9ed-4408-bd03-68eeae7f5846.jpg

福利时间

安利一本�:《Python机器学习一本通》此书结合了Python和机器学习两个热门领域,通过易于理解的知识讲解,帮助读者学习和掌握机器学习。点击下图可看详情/购买!�

01d7eeb7-1bfa-466e-aa86-585b945c65ae.jpg

感谢北京大学出版社的支持!定价148元的干货技术书!「凹凸数据」� 继续

300积分免费兑换啦,阅读原文直达

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值