当前位置: 首页 > 编程日记 > 正文

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

来源 | 凹凸数据(ID:alltodata)

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

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

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

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

(给个面子,别笑

演示三个功能

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

  • 爬取数据

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

  • 利用热点推荐新闻

爬虫部分

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

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

图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.textdata = 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()

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

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

今日热点词汇

flask部分:

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

from flask import Flask,render_template,request#注册创建app应用,_name_是python预定义变量
app = Flask(__name__)#跨域请求cors
from flask_cors import CORSCORS(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文件(举例新闻推荐页面)

<!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文件

#新闻推荐
@app.route('/news')
def news_list():data = get_mysql()return render_template('index4.html', data=data)

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

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

刷新新闻与查看新闻

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

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

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

更多精彩推荐
  • B 站神曲 damedane:精髓在于换脸,五分钟就能学会

  • 怎样用 Python 控制图片人物动起来?一文就能 Get!

  • 脑机接口技术:融资噱头还是文明推手?

  • Linus Torvalds 回应,Debian 项目曾讨论永久禁止他出席会议!

  • 字节跳动斩获支付牌照欲建金融帝国,技术实力配得上野心吗?

相关文章:

CPU值满resmgr:cpu quantum造成的Oracle等待事件解决办法

cpu quantum造成的Oracle等待事件解决办法 不少接触数据库的朋友有一个困扰已久的问题——resmgr:cpu quantum。已经遇过不少次这种CPU突然全绿的情况&#xff0c;通过隐含参数屏蔽了一下&#xff0c;方便研究。 刚好有人问我这个问题&#xff0c;就干脆翻文档写一篇文章给这位…

讲解用户角色切换

方法一&#xff1a;有root密码&#xff0c;可以使用su - root切换到root下&#xff0c;为了安全起见&#xff0c;不建议使用&#xff0c;因为如果切换到root下&#xff0c;被人修改了root密码&#xff0c;就真的完蛋了.......方法二&#xff1a;通过sudo给普通用户授权&#xf…

HTML教程-各窗口间相互操作(Frame Target)

文章来源&#xff1a; 山西之窗由Frames分出来的几个窗口的内容并不是静止不变的&#xff0c;往往一个窗口的内容随着另一个窗口的要求而不断变化&#xff0c;这就提高了Frames的利用价值。为了完成各窗口之间的相互操作&#xff0c;我们必须为每一个窗口起一个名字&#xff0c…

[转载] 晓说——第3期:梦回青楼 爱与自由的温柔乡(上)

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2012/08/20/2647811.html

10个 Python 工程师,9个不合格!

毋庸置疑&#xff0c;Python越来越被认可为程序员新时代的风口语言。 无论是刚入门的程序员&#xff0c;还是年薪百万的 BATJ 的大牛都无可否认&#xff1a;Python的应用能力是成为一名码农大神的必要项。 所以&#xff0c;很多程序员把Python当做第一语言来学习。 但对于Pytho…

驱动07.USB驱动程序

1 了解USB识别的过程 eg&#xff1a;在Windows系统下的一个现象&#xff1a;把手机的USB设备接到PC  1. 右下角弹出"发现android phone"  2. 跳出一个对话框&#xff0c;提示你安装驱动程序 问1. 既然还没有"驱动程序"&#xff0c;为何能知道是"a…

豪气!华为放话:3年培养100万AI人才!网友神回应了

大家经常把BAT挂在嘴边&#xff0c;但是可能有些人还不知道&#xff0c;华为的体量早已超越了这三巨头&#xff0c;只是迟迟不肯上市。华为的创始人任正非曾说表&#xff1a;上不上市不重要&#xff0c;最重要的是要让中国华为的技术能够称霸全球&#xff01;华为对技术的重视&…

InnoDB的启动,关闭,恢复

InnoDB存储引擎是MySQL的存储引擎之一&#xff0c;因此InnoDB存储引擎的启动和关闭更准确地是指在MySQL实例的启动过程中对InnoDB表存储引擎的处理过程。 参数innodb_fast_shutdown 在关闭时&#xff0c;参数innodb_fast_shutdown影响着表的存储引擎为InnoDB的行为。该参数可取…

微软推出提点神器动态ReLU,可能是最好的ReLU改进

作者 | Vincent 来源 | 晓飞的算法工程笔记 简介ReLU是深度学习中很重要的里程碑&#xff0c;简单但强大&#xff0c;能够极大地提升神经网络的性能。目前也有很多ReLU的改进版&#xff0c;比如Leaky ReLU和 PReLU&#xff0c;而这些改进版和原版的最终参数都是固定的。所以论…

监控 monit

官方说明文档 http://mmonit.com/monit/documentation/monit.html 实例 http://mmonit.com/wiki/Monit/ConfigurationExamples 下载最新软件包 wget http://mmonit.com/monit/dist/monit-5.4.tar.gz monit 介绍 monit是一个实用程序&#xff0c;用于在 Unix 系统上管理和监视…

框架窗口的尺寸设置

将窗口分割为几块&#xff0c;横向分用ROWS属性&#xff0c;纵向分用COLS属性&#xff0c;每一块的大小可以由这两个属性的值来实现。 <frameset cols#>  例&#xff1a;<frameset cols"100,200,300">   <frameset rows#>  例&#xff1a;<…

C语言双链表遍历,插入,删除

#include<stdio.h> #include<stdlib.h> #include <string.h> #define bzero(a, b) memset(a, 0, b)//windows平台下无bzero函数。 增加宏拓展移植性struct node{int data; //有效数据 struct node *pLast;//指向上一个节点的指针…

详解.NET的RAD功能

作者&#xff1a;中国计算机报Visual Studio.NET 拥有开发者建立一个成功而强大的中间层应用服务所需要的所有开发工具&#xff0c;利用这些工具&#xff0c;开发者可以&#xff1a; 1.保障消息传播和利用微软消息队列&#xff08;MSMQ&#xff09;跨平台的通讯&#xff1b; 2…

Java初学者如何自学和自己定位解决问题

注&#xff1a; OneCoder 即本人苦逼Coder 今天群里(Java Coder群&#xff1a;91513074)的朋友&#xff0c;问我该如何看帮助文档&#xff0c;或者说在遇到问题的时候如何解决。希望我能介绍一下我的方法。 这个OneCoder其实没有资格高谈阔论&#xff0c;只能说说个人的习惯和…

仅用 4 小时,吃透“百度太行”背后硬科技!

我们正处于一个 AI 生万物&#xff0c;万物生 AI 的时代&#xff0c;云与 AI 也如共同体&#xff0c;水乳相容不可分割。无论是企业还是政府机构、社会团体&#xff0c;上云已然成为一个不可抗的趋势&#xff0c;尤其是 AI 的发展&#xff0c;更是离不开强大、灵活、便捷的云计…

(转)java 中的try catch finally 语句中含有return语句的执行情况(总结版)

原处&#xff1a;http://blog.csdn.net/ns_code/article/details/17485221在这里看到了try catch finally块中含有return语句时程序执行的几种情况&#xff0c;但其实总结的并不全&#xff0c;而且分析的比较含糊。但有一点是可以肯定的&#xff0c;finally块中的内容会先于try…

希捷携全线企业级解决方案出席ODCC,Exos X18与Exos 2X14硬盘斩获两项大奖

2020年9月15日&#xff0c;数据存储与管理解决方案提供商希捷科技公司亮相2020开放数据中心&#xff08;ODCC&#xff09;峰会&#xff0c;并发表了以“数据新视界”为主题的演讲。希捷银河&#xff08;Exos&#xff09;18TB硬盘与希捷银河&#xff08;Exos&#xff09;2X14 MA…

动态装载和使用类型

作者&#xff1a;微软Reflection提供诸如Microsoft Visual Basic.NET和JScript语言编译器使用的底层结构来实施隐性后绑定。绑定是定位与某一特定类型相对应的声明的过程。当这个过程发生在运行的时候&#xff0c;而不是编译的时候&#xff0c;它被称为后绑定。Visual Basic.NE…

求1 + 2 + 3...+ n的和

题目&#xff1a;求1 2 3 ... n 的和 要求&#xff1a;不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C) 答&#xff1a; #include "stdafx.h" #include <iostream>using namespace std;//1、函数查找表法 typedef in…

Debussy的安装

下载完成后对软件安装包进行解压缩&#xff0c;得到安装文件和破解文件。 双击Debussy-54v9-NT.exe进行安装&#xff0c;出现以下界面&#xff0c;选择安装的路径。 选择安装类型&#xff0c;最好选择typical类型。 选择相关配置。 进行安装。 选择Yes继续&#xff0c;dont dis…

如何调试你的C#程序

作者&#xff1a;龙山文化 文章来源&#xff1a;ASPCool.com欢迎来到C#的奇妙天空&#xff0c;在这里&#xff0c;希望你能获得你想获得的东西&#xff0c;.我们真诚希望能给你带来巨大的帮助&#xff0c;带你进入另外一个广阔的空间。 Come on. Follow me and then U can W…

SSAS使用时间智能解决本年累计、同比、环比【转载】

通常&#xff0c;我们需要使用MDX来定义本年累计、同比、环比等一系列基于时间维度的计算指标。但是这样有一个麻烦的地方就是比如我有50个基础指标&#xff0c;每个指标都需要本年累计&#xff0c;那我就需要写50遍下面的语句&#xff1a;create member CURRENTCUBE.[MEASURES…

良心贴!没想到 Google 排名第一的编程语言,可以这么简单!

作为最近几年最火的编程语言&#xff0c;Python&#xff08;没有之一&#xff09;已经走过了20多个年头。也难怪&#xff0c;作为大数据时代和人工智能时代的必备语言&#xff0c;Python 的优点太多了&#xff0c;语言简洁、易学、开发效率高、可移植性强......不过它火起来的主…

报错 org.springframework.beans.factory.BeanCreationException

2019独角兽企业重金招聘Python工程师标准>>> 一.问题背景&#xff1a; spring mvc eclipse启动报错&#xff1a;org.springframework.beans.factory.BeanCreationException 二.分析 1.写了一个名为“User”的 实体bean&#xff0c;然后写了有参构造函数&#xff0c;…

醉没醉,带上智能手机走两步就知道

来源 | HyperAI超神经场景描述&#xff1a;斯坦福大学和匹兹堡大学的研究小组&#xff0c;最近发表了一项用智能手机检测醉酒状态的研究&#xff0c;可利用步态特征检测相应的血液和呼吸酒精浓度。以后喝没喝多&#xff0c;用你的手机测一测就知道。关键词&#xff1a;智能手机…

Linux编程常见问题

错误提示&#xff1a;Makefile:2: *** 遗漏分隔符 。 停止。原因makefile中 gcc语句前 缺少一个 tab分割符错误提示&#xff1a; bash: ./makefile: 权限不够原因 makefile 是文本文件不可执行&#xff0c;即使是root&#xff0c;也会权限不够我们应该在命令行下使用make&#…

网络工程师转售前的条件

昨天出差回来的时候已是凌晨四点&#xff0c;辛勤工作的早餐已经开始忙碌了。你走之后的第一周&#xff0c;房子空荡荡的&#xff0c;就剩下你的头发和发髻&#xff0c;还有你留下的信。真的很对不起你&#xff0c;从参加工作开始&#xff0c;我们总是聚少离多&#xff0c;很多…

python流程控制:while循环

python编程中whihe语句用于循环执行程序&#xff0c;即在某条件下&#xff0c;循环执行某段程序&#xff0c;以处理需要重复处理的相同任务。 while循环语句格式&#xff1a; while <判断条件>&#xff1a;执行语句 count 0 while (count <9):print("The count …

阿里动物园再添新丁,小蛮驴搞定物流最后三公里

作者 | 硬核云顶宫责编 | 李雪敬头图 | CSDN 下载自视觉中国今天的云栖大会上&#xff0c;阿里动物园再添新丁&#xff0c;不再这个新加入的动物既不是骡子也不是马&#xff0c;而是小蛮驴&#xff0c;这是一个专门解决物流最后三公里的AI机器人。今天的云栖大会&#xff0c;阿…

C语言中的CONST使用

C中的CONST使用 const是一个C语言的关键字&#xff0c;它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。 const的使用是c语言中一个比较微妙的地方&#xff0c;请看下面几个问题。 问题&#xff1a;const变量 和 常量 为什么下面的例子在…