前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小伙Python爬虫并自制新闻网站,太好玩了

小伙Python爬虫并自制新闻网站,太好玩了

作者头像
朱小五
发布于 2020-09-15 09:16:31
发布于 2020-09-15 09:16:31
74000
代码可运行
举报
文章被收录于专栏:凹凸玩数据凹凸玩数据
运行总次数:0
代码可运行

作者:豆腐

来源:凹凸数据

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

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

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

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

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

(给个面子,别笑

演示三个功能

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

  • 爬取数据
  • 利用实时爬取数据生成词云
  • 利用热点推荐新闻

爬虫部分:

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

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

图2

是一个列表样式,

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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个栏目的新闻

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()

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

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

今日热点词汇

flask部分:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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文件(举例新闻推荐页面)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div align="" class="img">
    <h1>今日新闻推荐</h1>
    <div class="img">
        <ul>
          <li> <a href="{{data[0][1]}}">{{data[0][0]}}</a></li>
          <li> <a href="{{data[1][1]}}">{{data[1][0]}}</a></li>
          <li> <a href="{{data[2][1]}}">{{data[2][0]}}</a></li>
          <li> <a href="{{data[3][1]}}">{{data[3][0]}}</a></li>
          <li> <a href="{{data[4][1]}}">{{data[4][0]}}</a></li>
          <li> <a href="{{data[5][1]}}">{{data[5][0]}}</a></li>
          <li> <a href="{{data[6][1]}}">{{data[6][0]}}</a></li>
          <li> <a href="{{data[7][1]}}">{{data[7][0]}}</a></li>
          <li> <a href="{{data[8][1]}}">{{data[8][0]}}</a></li>
          <li> <a href="{{data[9][1]}}">{{data[9][0]}}</a></li>
          <li> <a href="{{data[10][1]}}">{{data[10][0]}}</a></li>
          <li> <a href="{{data[11][1]}}">{{data[11][0]}}</a></li>
          <li> <a href="{{data[12][1]}}">{{data[12][0]}}</a></li>
          <li> <a href="{{data[13][1]}}">{{data[13][0]}}</a></li>
          <li> <a href="{{data[14][1]}}">{{data[14][0]}}</a></li>
          <li> <a href="{{data[15][1]}}">{{data[15][0]}}</a></li>
          <li> <a href="{{data[16][1]}}">{{data[16][0]}}</a></li>
          <li> <a href="{{data[17][1]}}">{{data[17][0]}}</a></li>
          <li> <a href="{{data[18][1]}}">{{data[18][0]}}</a></li>
          <li> <a href="{{data[19][1]}}">{{data[19][0]}}</a></li>

        </ul>
    </div>
    <div class="logo-img">

    </div>
</div>

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#新闻推荐
@app.route('/news')
def news_list():
    data = get_mysql()
    
    return render_template('index4.html', data=data)

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

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

刷新新闻与查看新闻

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
flask框架(二)配套代码
1、cookie.py """ - 解释: 用来保持服务器和浏览器交互的状态的, 由服务器设置,存储在浏览器 - 作用: 用来做广告推送 - cookie的设置和获取 - 设置cookie: response.set_cookie(key,value,max_age) - max_age: 表示cookie在浏览器的存储时间,单位是秒 - 获取cookie: request.cookies.get("key") """ from flask import Flask, make_res
小闫同学啊
2019/07/18
1.3K0
爬取近千张女神赫本的美照,做成网站并给其中的黑白照片上色,好玩!
对于赫本相信大家都非常熟悉了,绝对是一代女神,今天我们就来爬取女神的近千张美照,在一饱眼福的同时,还可以学习下如何做网站,对于老旧的黑白照片,还有一键上色功能可以玩,真是一举多得
周萝卜
2021/10/25
6060
Python开发个人专属表情包网站
“表情包”是一种利用图片来表示感情的一种方式。表情包是在社交软件活跃之后,形成的一种流行文化,表情包流行于互联网上面,基本人人都会发表情。
python学习教程
2020/02/11
6270
Python开发个人专属表情包网站
Python Web实战:Flask + Vue 开发一个漂亮的词云网站
Python里面两大最牛的Web框架,一个是Django,一个是Flask 。今天就分享一个用Flask做的词云生成网站,非常有意思的小web,适合练手。
杰哥的IT之旅
2021/10/28
1.2K0
Python Web实战:Flask + Vue 开发一个漂亮的词云网站
Python爬虫+Flask,带你创建车标学习网站
人,为什么要读书?举个例子: 当看到天边飞鸟,你会说:“落霞与孤鹜齐飞,秋水共长天一色。”而不是:“卧靠,好多鸟。”; 当你失恋时你低吟浅唱道:“人生若只如初见,何事秋风悲画扇。”而不是千万遍地悲喊:“蓝瘦,香菇!”
Python编程与实战
2020/09/27
6800
Python爬虫+Flask,带你创建车标学习网站
解锁unlist在网页爬取中的另类用法
在大数据时代,网络爬虫技术是获取海量数据的关键工具。然而,随着网站反爬措施的加强,爬虫开发者需要探索新的方法和工具,以确保高效、安全的数据抓取。今日头条作为国内知名的新闻聚合平台,以其多样化的内容和即时的新闻更新,成为数据分析和挖掘的重要来源。头条新闻覆盖了热点时事、社会动态、科技发展等多个领域,为用户提供了全面的信息服务。在这篇文章中,我们将聚焦于一种另类的技术手段——unlist的使用,并结合代理IP和多线程技术,在采集今日头条新闻热点时,实现高效的数据抓取。
jackcode
2024/12/31
1280
解锁unlist在网页爬取中的另类用法
挑战30天学完Python:Day26 Python Web 服务
Python本身是一种通用的语言,可以用于很多的地方。在本篇中,我们将看到如何在Web开发中使用Python。它有很多的web架构框架。Django和Flask是比较流行。接下来我们就看看如何使用Flask进行web的开发。
MegaQi
2023/10/21
2470
挑战30天学完Python:Day26 Python Web 服务
【python实操】年轻人,想会写抢购脚本和爬虫?试试多线程吧(附爬虫完整源代码)
Python 多线程(multi-threading)是一种利用多个线程同时执行任务的技术,它旨在提高程序的运行效率和性能。
20岁爱吃必胜客
2023/03/27
1.2K0
【python实操】年轻人,想会写抢购脚本和爬虫?试试多线程吧(附爬虫完整源代码)
手把手教你用python做一个招聘岗位信息聚合系统
在当今竞争激烈的就业市场中,招聘岗位信息的获取变得越来越重要。为了方便求职者快速找到适合自己的岗位,我们可以借助Python编程语言开发一个招聘岗位信息聚合系统。该系统可以从官网、Boss直聘、猎聘等多个招聘网站上获取招聘信息,并进行聚合和展示。
大盘鸡拌面
2023/12/18
6930
[Python爬虫]通过分析胸罩销售记录 发现了惊人的秘密
通过爬虫去爬取京东的用户评价,通过分析爬取的数据能得到很多结果,比如,哪一种颜色的胸罩最受女性欢迎,以及中国女性的平均size(仅供参考哦~)
小小詹同学
2019/11/12
6410
[Python爬虫]通过分析胸罩销售记录 发现了惊人的秘密
用Python打造属于自己的搜索引擎
打开Pycharm,然后New Project 选择Flask模块,然后会自动安装Flask库的,这里就不赘述了
龙哥
2018/10/22
4.2K0
用Python打造属于自己的搜索引擎
Python爬虫获取豆瓣TOP250电影详情
偶然间看到豆瓣电影的TOP250榜单,于是突发奇想写了这个爬虫脚本。将通过爬取豆瓣电影TOP250的榜单列表获取电影详情页的URL,然后再爬取电影详情页URL中的内容,最终获得电影的名称,导演,演员,类别,制片国家/地区,语言,上映日期,片长和剧情简介等信息,经过一系列的处理后输出。
泰坦HW
2020/07/22
2.2K0
Python爬虫获取豆瓣TOP250电影详情
004:Python爬虫实战 由易到难(图文解析)
相信有了前面三章的基础了解,我们对爬虫的基础知识已经有所掌握。 本篇内容是从易到难给大家讲解一些常用爬虫的手写。 包括图片爬虫、链接爬虫、多线程爬虫等等。
李玺
2021/11/22
4320
004:Python爬虫实战 由易到难(图文解析)
爬虫之scrapy框架
  何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、解析、存储,scrapy框架都已经搭建好了。scrapy是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架,scrapy使用了一种非阻塞的代码实现并发的,结构如下:
py3study
2020/01/17
1.3K0
通过Python爬虫获取【小说网站GUI】数据,保姆级教学
所有的前置环境以及需要学习的基础我都放置在【Python基础(适合初学-完整教程-学习时间一周左右-节约您的时间)】中,学完基础咱们再配置一下Python爬虫的基础环境【看完这个,还不会【Python爬虫环境】,请你吃瓜】,搞定了基础和环境,我们就可以相对的随心所欲的获取想要的数据了,所有的代码都是我一点点写的,都细心的测试过,如果某个博客爬取的内容失效,私聊我即可,留言太多了,很难看得到,本系列的文章意在于帮助大家节约工作时间,希望能给大家带来一定的价值。
红目香薰
2023/01/14
1.1K0
通过Python爬虫获取【小说网站GUI】数据,保姆级教学
Python爬虫模拟登陆和异步爬虫
模拟登陆 使用超级鹰平台识别验证码的编码流程: 将验证码图片进行本地下载 调用平台提供的示例代码进行图片数据识别 有验证码,验证码可以读取到但测试未成功 # 验证码 import requests from lxml import html import chaojiying # 封装识别验证码函数 if __name__ == "__main__": headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win6
shaoshaossm
2022/12/26
4660
Python爬虫:对科技新闻的数据分析
大数据时代到来,网络数据正成为潜在宝藏,大量商业信息、社会信息以文本等存储在网页中,这些具有相当大价值的信息不同于传统的结构化数据,属于非结构化数据,需要我们使用一定的技术和方法将其转化为计算机能够理解的特征信息,然后我们才能对其进行分析。这里我们采用python爬虫提取腾讯网站科技新闻的标题,通过文本分析,来进行分析。
Yolandarrrrr
2020/07/02
2.5K1
Python爬虫:对科技新闻的数据分析
Python爬虫爬取新闻网站新闻
2017年9月16日零基础入门Python,第二天就给自己找了一个任务,做网站文章的爬虫小项目,因为实战是学代码的最快方式。所以从今天起开始写Python实战入门系列教程,也建议大家学Python时一定要多写多练。
conanma
2021/11/01
7K0
python实现在线微博数据可视化
完整代码gitee地址:https://gitee.com/lyc96/weibo
Python研究者
2020/09/28
7860
python实现在线微博数据可视化
《我的PaddlePaddle学习之路》笔记十三——把PaddlePaddle部署到网站服务器上
如果读者使用过百度等的一些图像识别的接口,比如百度的细粒度图像识别接口,应该了解这个过程,省略其他的安全方面的考虑。这个接口大体的流程是,我们把图像上传到百度的网站上,然后服务器把这些图像转换成功矢量数据,最后就是拿这些数据传给深度学习的预测接口,比如是PaddlePaddle的预测接口,获取到预测结果,返回给客户端。这个只是简单的流程,真实的复杂性远远不止这些,但是我们只需要了解这些,然后去搭建属于我们的图像识别接口。
夜雨飘零
2020/05/06
1.4K0
推荐阅读
相关推荐
flask框架(二)配套代码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验