先上图(骗你们学python,再骗你们用pyecharts)
柱状图.png
pyecharts这个插件很牛逼,可以生成各种图表,其次就是BeautifulSoup,识别html
ide可以vscode也可以pycharm都很好用
# 可视化爬取结果
import requests
from bs4 import BeautifulSoup # 从bs4引入BeautifulSoup
from pyecharts.charts import Page, Pie, Bar # 引入绘图需要的模块
from pyecharts import options as opts
import datetime
if __name__ == '__main__':
now_month = datetime.datetime.now().month
# 请求网页
url = "https://movie.douban.com/cinema/later/chengdu/"
response = requests.get(url)
soup = BeautifulSoup(response.content.decode('utf-8'), 'html5lib')
all_movies = soup.find('div', id="showing-soon") # 先找到最大的div
# 先把所有的数据存到这个list里面
all_movies_info = []
for each_movie in all_movies.find_all('div', class_="item"): # 从最大的div里面找到影片的div
# print(each_movie) # 输出每个影片div的内容
all_a_tag = each_movie.find_all('a')
all_li_tag = each_movie.find_all('li')
movie_name = all_a_tag[1].text
moive_href = all_a_tag[1]['href']
movie_date = all_li_tag[0].text
movie_type = all_li_tag[1].text
movie_area = all_li_tag[2].text
movie_lovers = all_li_tag[3].text.replace('人想看', '') # 去掉除了数字之外的字
# 把电影数据添加到list
all_movies_info.append({'name': movie_name, 'date': movie_date, 'type': movie_type,
'area': movie_area, 'lovers': movie_lovers})
# print('名字:{},日期:{},类型:{},地区:{}, 关注者:{}'.format(
# movie_name, movie_date, movie_type, movie_area, movie_lovers))
# 绘制关注者排行榜图
sort_by_lovers = sorted(all_movies_info, key=lambda x: int(x['lovers']))
all_names = [i['name'] for i in sort_by_lovers]
all_lovers = [i['lovers'] for i in sort_by_lovers]
print(sort_by_lovers)
# V1 版本开始支持链式调用
bar = (
Bar()
.add_xaxis(all_names)
.add_yaxis("电影资讯", all_lovers)
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(title_opts=opts.TitleOpts(title=str(now_month) + "月豆瓣电影排行"))
)
bar.render()