python爬虫+数据可视化项目(关注、持续更新)
python爬虫+数据可视化项目(一)
爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#)
爬取内容:全国实时温度最低的十个城市气温排行榜
使用工具:requests库实现发送请求、获取响应。
beautifulsoup实现数据解析、提取和清洗
pyechart模块实现数据可视化
爬取结果:柱状图可视化展示:

直接放代码(详细说明在注释里,欢迎同行相互交流、学习~):
import requests
from bs4 import BeautifulSoup
from pyecharts import Bar ALL_DATA = []
def send_parse_urls(start_urls):
headers = {
"User-Agent": "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
}
for start_url in start_urls:
response = requests.get(start_url,headers=headers)
# 编码问题的解决
response = response.text.encode("raw_unicode_escape").decode("utf-8")
soup = BeautifulSoup(response,"html5lib") #lxml解析器:性能比较好,html5lib:适合页面结构比较混乱的
div_tatall = soup.find("div",class_="conMidtab") #find() 找符合要求的第一个元素
tables = div_tatall.find_all("table") #find_all() 找到符合要求的所有元素的列表
for table in tables:
trs = table.find_all("tr")
info_trs = trs[2:]
for index,info_tr in enumerate(info_trs): # 枚举函数,可以获得索引
# print(index,info_tr)
# print("="*30)
city_td = info_tr.find_all("td")[0]
temp_td = info_tr.find_all("td")[6]
# if的判断的index的特殊情况应该在一般情况的后面,把之前的数据覆盖
if index==0:
city_td = info_tr.find_all("td")[1]
temp_td = info_tr.find_all("td")[7]
city=list(city_td.stripped_strings)[0]
temp=list(temp_td.stripped_strings)[0]
ALL_DATA.append({"city":city,"temp":temp})
return ALL_DATA def get_start_urls():
start_urls = [
"http://www.weather.com.cn/textFC/hb.shtml",
"http://www.weather.com.cn/textFC/db.shtml",
"http://www.weather.com.cn/textFC/hd.shtml",
"http://www.weather.com.cn/textFC/hz.shtml",
"http://www.weather.com.cn/textFC/hn.shtml",
"http://www.weather.com.cn/textFC/xb.shtml",
"http://www.weather.com.cn/textFC/xn.shtml",
"http://www.weather.com.cn/textFC/gat.shtml",
]
return start_urls def main():
"""
主程序逻辑
展示全国实时温度最低的十个城市气温排行榜的柱状图
"""
# 1 获取所有起始url
start_urls = get_start_urls()
# 2 发送请求获取响应、解析页面
data = send_parse_urls(start_urls)
# print(data)
# 4 数据可视化
#1排序
data.sort(key=lambda data:int(data["temp"]))
#2切片,选择出温度最低的十个城市和温度值
show_data = data[:10]
#3分出城市和温度
city = list(map(lambda data:data["city"],show_data))
temp = list(map(lambda data:int(data["temp"]),show_data))
#4创建柱状图、生成目标图
chart = Bar("中国最低气温排行榜") #需要安装pyechart模块
chart.add("",city,temp)
chart.render("tempture.html") if __name__ == '__main__':
main()
请关注,未完待续!
python爬虫+数据可视化项目(关注、持续更新)的更多相关文章
- Python爬虫+数据可视化教学:分析猫咪交易数据
猫猫这么可爱 不会有人不喜欢吧: 猫猫真的很可爱,和我女朋友一样可爱~你们可以和女朋友一起养一只可爱猫猫女朋友都有的吧?啊没有的话当我没说-咳咳网上的数据太多.太杂,而且我也不知道哪个网站的数据比较好 ...
- Python爬虫开发与项目实战
Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...
- Python爬虫开发与项目实战pdf电子书|网盘链接带提取码直接提取|
Python爬虫开发与项目实战从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算.大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应 ...
- python 爬虫数据存入csv格式方法
python 爬虫数据存入csv格式方法 命令存储方式:scrapy crawl ju -o ju.csv 第一种方法:with open("F:/book_top250.csv" ...
- BI工具做数据可视化项目频频失败的原因
现如今数据可视化可谓是非常之火,随着硬件价格的一降再降,仿佛做数据可视化项目,你没有数据大屏,你就没有逼格.理想很丰满,现实很骨感,并不是每一个数据可视化项目都能够成功.数据可视化项目的进行,无外乎是 ...
- 为什么有些BI工具做数据可视化项目频频失败?
现如今数据可视化可谓是非常之火,随着硬件价格的一降再降,仿佛做数据可视化项目,你没有数据大屏,你就没有逼格.理想很丰满,现实很骨感,并不是每一个数据可视化项目都能够成功.数据可视化项目的进行,无外乎是 ...
- github 上有趣又实用的前端项目(持续更新,欢迎补充)
github 上有趣又实用的前端项目(持续更新,欢迎补充) 1. reveal.js: 幻灯片展示框架 一个专门用来做 HTML 幻灯片的框架,支持 HTML 和 Markdown 语法. githu ...
- python爬虫28 | 你爬下的数据不分析一波可就亏了啊,使用python进行数据可视化
通过这段时间 小帅b教你从抓包开始 到数据爬取 到数据解析 再到数据存储 相信你已经能抓取大部分你想爬取的网站数据了 恭喜恭喜 但是 数据抓取下来 要好好分析一波 最好的方式就是把数据进行可视化 这样 ...
- Python:数据可视化pyecharts的使用
什么是pyecharts? pyecharts 是一个用于生成 Echarts 图表的类库. echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化.pyecharts 是一个用于生 ...
随机推荐
- javascript基础(Array)
1,join() Array.join(),不改变原数组,将数组中所有元素转换为字符串并连接在一起,返回最后生成的字符串 let a=[1,2,3]; a.join(); // =>" ...
- js高级3
1.解决函数内this的指向 可以在函数外提前声明变量_this/that=this 通过apply和call来修改函数内的this指向 (1)二者区别 用法是一样的,就是参数形式不一样 ...
- python语法_函数
---恢复内容开始--- 函数: 1 减少重复代码 2 定义一个功能,需要直接调用 3 保持代码一致性 def funcation_name(参数s): 功能代码块0 参数可以为多个,传入时按照前后 ...
- [Swift]LeetCode72. 编辑距离 | Edit Distance
Given two words word1 and word2, find the minimum number of operations required to convert word1 to ...
- [Swift]LeetCode557. 反转字符串中的单词 III | Reverse Words in a String III
Given a string, you need to reverse the order of characters in each word within a sentence while sti ...
- [Swift]LeetCode641. 设计循环双端队列 | Design Circular Deque
Design your implementation of the circular double-ended queue (deque). Your implementation should su ...
- Kubernetes---存储
pod中定义需要的存储卷,类型为pvc pvc 与 pv 建立绑定关系 kubectl explain pv 定义pv时不要加namspce
- 接口平台经常报server internal error(500)错误
查询日志,发现连接mysql报错,web页面显示server internal error(500) 解决方法:重启mysql服务器 systemctl start mysqld #安装mysql # ...
- Python档案袋( Json、pickle、加密与解密)
Json是各程序通用的数据格式:pickle是Python特有的,可以存储很多Python特有的数据,如函数地址等 Json的简单使用: import json jsondata={ "us ...
- ThinkInJava之内部类
一:内部类概述 将一个类的定义放在另一个类的内部,这就是内部类.内部类是Java一种非常有用的特征,因为他允许你把一些逻辑相关的数据组织在一起,并控制它的可见性. 二:内部类的创建 我们都知道类的创建 ...