内容解析:html----BeautifulSoup----:find、find_all数据匹配:dict、list、str匹配方法,[][]数据库:database:DB_MV先自动创建table,以当天日期命名;再写入数据。
简单输出:当日top10,电影名:评分


代码没经过优化
"""爬取豆瓣网排行榜前十的电影"""import requestsimport timefrom bs4 import BeautifulSoupimport pymysql"""内容匹配及数据输出"""def main_DBMV_top():# 1 爬取源url = "https://movie.douban.com/chart"header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"}# 2 发起http请求spond = requests.get(url, headers=header)res_text = spond.text# 3 内容解析soup = BeautifulSoup(res_text, "html.parser")soup1 = soup.find_all(width="75") # 解析出电影名称soup2 = soup.find_all('span', class_="rating_nums") # 解析出评分# 4数据的处理list_name = [] # 将电影名做成一个列表for i in range(10):list_name.append(soup1[i]['alt'])list_value = [] # 将评分值做成一个列表for i in range(10):list_value.append(soup2[i].text)dict_name_value = dict(zip(list_name, list_value)) # 将两个list转化为字典dictmv_top = sorted(dict_name_value.items(), key=lambda kv: (kv[1], kv[0]), reverse=True) # 字典从大到小排序,type==list'''数据-->mysql---创建每日表'''conn = pymysql.connect(host='192.168.174.130',user='mv',password='mv',database='DB_MV');'''游标的使用----创建表,表名为top+当天日期'''cursor1 = conn.cursor() # 获取游标sql1 = 'create table if not exists top' + str(update_time) + '(TOP int not null primary key AUTO_INCREMENT,update_time varchar(11),mv_name varchar(11),mv_values varchar(11)); 'cursor1.execute(sql1) # 执行语句conn.commit()cursor1.close() # 释放游标conn.close()'''写入数据'''print("\033[1;31m豆瓣网电影评分TOP10:\033[0m")for i in range(len(mv_top)):mv_top_name = mv_top[i][0] # 取出电影名,后期直接使用mv_top_value = mv_top[i][1] # 取出评分,后期直接使用print("\033[1;32m第" + str(i + 1) + '名:' + str(mv_top_name) + ":" + str(mv_top_value) + "分\033[0m")conn2 = pymysql.connect(host='192.168.174.130',user='mv',password='mv',database='DB_MV');'''游标的使用----导入数据,第一列为自增列代表排名'''cursor2 = conn2.cursor() # 获取游标sql2 = 'insert into top' + str(update_time) + ' (update_time,mv_name,mv_values) values (%s,%s,%s);'cursor2.execute(sql2, [update_time, mv_top_name, mv_top_value]) # 执行语句conn2.commit()cursor2.close() # 释放游标conn2.close()if __name__ == '__main__':update_time = time.strftime("%Y%m%d", time.localtime()) # 获取当天日期main_DBMV_top() # 调用函数,抓取数据,传教mysql表,将数据写入nysqlprint('\033[0;31;46m表创建成功!\033[0m')print(update_time+"\033[0;31;46m的数据写入成功!!!\033[0m")
文章转载自小小IT仔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




