python获取豆瓣高分电影写入MYSQL+matplotlib简单可视化
生活随笔
收集整理的這篇文章主要介紹了
python获取豆瓣高分电影写入MYSQL+matplotlib简单可视化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
獲取豆瓣高分電影(500部)寫入MySQL數據庫:
我是一名python開發工程師,整理了一套python的學習資料,從基礎的python腳本到web開發、爬蟲、 數據分析、數據可視化、機器學習、面試真題等。想要的可以進群:688244617免費領取#-*-coding:UTF-8-*- import requests import json import pymysql from lxml import etreedef GetWriteData(url,num):conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='mydata')cursor = conn.cursor()cursor.execute("DROP TABLE IF EXISTS db") #如果db Base存在則刪除cursor.execute('create table db ( id int(5) primary key, pname varchar(255), pf varchar(10) ,plnum int(10),zhpf int(10))')i = 0while i < num:html = requests.get(url + str(i))if '異常請求' in html.text:print('請求過于頻繁,請稍后再試!')breaktext = json.loads(html.text[12:-1])i += 20print(i,round(i/20))for j in text:try:s = requests.get(j['url'])except:print('訪問異常')else:ehtml = etree.HTML(s.text)nu = int(''.join(ehtml.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/div/div[2]/a/span/text()')))zhpf=round(float(nu /10000 * 0.5)) + round(float(j['rate']) * 2)cursor.execute('INSERT INTO db(id,pname,pf,plnum,zhpf) values (%s, %s, %s ,%s,%s) ',[k,j['title'],j['rate'],nu,zhpf])cursor.rowcountconn.commit()cursor.close()conn.close()print('任務結束。')if __name__ == '__main__':url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=豆瓣高分&sort=recommend&page_limit=20&page_start='print('開始獲取,請稍候...')GetWriteData(url,500) # 500為獲取影片數量matplotlib簡單可視化:
import pymysql import matplotlib.pyplot as plt conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='mydata',cursorclass = pymysql.cursors.DictCursor) cursor = conn.cursor() cursor.execute('select * from mydata.db order by zhpf desc;') values = cursor.fetchall() cursor.close() conn.close() namedata=[] zhpf=[] n=0 for i in values:if n>20:breaknamedata.append(i['pname'])zhpf.append(i['zhpf'])n+=1 plt.rcParams["font.sans-serif"]=["SimHei"] plt.rcParams["axes.unicode_minus"]=False plt.barh(y=namedata, width=zhpf, label='綜合評分',color='steelblue', alpha=0.8, height=0.8) for y, x in enumerate(zhpf):plt.text(x+2, y-0.4, '%s' % x, ha='center', va='bottom') plt.xlabel("分值") plt.ylabel("片名") plt.legend() plt.show()?以上就是本文的全部內容,覺得文章還不錯的話不妨收藏起來慢慢看,有任何建議或看法歡迎大家在評論區分享討論!
?
?
總結
以上是生活随笔為你收集整理的python获取豆瓣高分电影写入MYSQL+matplotlib简单可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你知道战国四大名将都有谁吗
- 下一篇: 这个冬季,你抑郁吗?