echarts mysql scrapy,利用请求数据库、靓汤和pyecharts对中国天气网进行抓取和可视化,requests,beautifulsouppyecharts,爬取,并且...

1.安装环境

(1) requests库(负责数据爬取):pip install requests

(2) beautifulsoup(负责数据解析):pip install bs4

(3) pyecharts(负责数据可视化): pip install pyecharts

【补充】pyecharts在github上的仓库地址为:

https://github.com/pyecharts/pyecharts

,需要的可以自行去学习,很容易上手。

已经安装以上环境的可忽略

2.爬虫代码

# 爬取中国 天气网 并进行 pyecharts数据可视化

# 爬取中国 天气网 并进行 pyecharts数据可视化

# requests + beautifulsoup + pyecharts

# requests + beautifulsoup + pyecharts

import requests

from bs4 import BeautifulSoup

from pyecharts.charts import Bar

from pyecharts import options as opts

ALL_DATA = []

# 爬取和解析

def parse_page(url):

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '

'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'

}

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

# 将爬取下来的bytes类型数据解析成unicode字符串

text = response.content.decode('utf-8')

# 这里使用的是html5lib解析器,兼容比较好,推荐使用这个

soup = BeautifulSoup(text, 'html5lib')

conMidtab = soup.find('div', class_='conMidtab')

tables = conMidtab.find_all('table')

for table in tables:

trs = table.find_all('tr')[2:]

# 不懂enumerate的可以自行去百度一下其用法

for index, tr in enumerate(trs):

tds = tr.find_all('td')

city_td = tds[0]

if index == 0:

city_td = tds[1]

# 返回的一个生成器,所以要强行转化为一个列表

city = list(city_td.stripped_strings)[0]

temp_td = tds[-2]

# stripped_strings是beautifulsoup获取文本的一种方式,并且去空格

min_temp = list(temp_td.stripped_strings)[0]

# 通过append来向列表中添加元素

ALL_DATA.append({'城市': city, '最低气温': int(min_temp)})

def main():

# 爬取的页面列表

urls = [

'http://www.weather.com.cn/textFC/hb.shtml',

'http://www.weather.com.cn/textFC/db.shtml',

'http://www.weather.com.cn/textFC/hz.shtml',

'http://www.weather.com.cn/textFC/hn.shtml',

'http://www.weather.com.cn/textFC/hd.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'

]

# 循环遍历页面列表,进行数据爬取和解析

for url in urls:

parse_page(url)

# 分析数据,根据最低气温进行排序

ALL_DATA.sort(key=lambda data: data['最低气温'])

data = ALL_DATA[0:10] # 取出前10的最低气温及其城市

# pyecharts

# 数据可视化

# 数据可视化

cities = list(map(lambda x: x['城市'], data))

temps = list(map(lambda x: x['最低气温'], data))

bar = Bar()

# x轴内容

bar.add_xaxis(cities)

# 某一对象的标识,以及列表x对应的每一个y列表元素

bar.add_yaxis("气温", temps)

# chart名称

bar.set_global_opts(title_opts=opts.TitleOpts(title="中国天气网"))

# 在本地生成html页面

bar.render("tianqi.html")

# 调用main函数

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值