网易云歌单爬取并保存

2023-12-25 08:08
文章标签 保存 爬取 网易 歌单

本文主要是介绍网易云歌单爬取并保存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

爬取网易云2011-2017melon 年榜歌单并保存

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 25 19:57:09 2018@author: marson
"""import requests
from bs4 import BeautifulSoup
import json
import create_songlistdef get_ist(i,id):#i='2011'#id='560117127'play_url = 'http://music.163.com/playlist?id='+str(id)#560117127 --2011#560095569 --2012#19020312  --2013#559454416 --2014#159677693 --2015#560080737 --2016#2074743371 --2017s = requests.session()s = BeautifulSoup(s.get(play_url,headers = headers).content,'lxml')main = s.find('ul',{'class':'f-hide'})f = open('E:\\python\\melon\\榜单\\'+str(i)+'.txt','a',encoding='utf-8') #保存本地m=1for music in main.find_all('a'):#print('{} '.format(music['href']))singer_url = 'http://music.163.com'+music['href']#print(singer_url)se = requests.session()se = BeautifulSoup(se.get(singer_url,headers = headers).content,'lxml')des=se.find('script',type="application/ld+json").get_text()desb = json.loads(des)singer = desb['description'].split('。')[0].split(':')[1]album = desb['description'].split('。')[1].split(':')[1]sg = singer.split(',')for ss in sg:f.write(str(m)+'|'+desb['title']+'|'+ss+'|'+album+'|'+str(i)+'\n')data.append((m,desb['title'],ss,album,i))m=m+1#print (str(m),desb['title'],desb['description'])f.close()if __name__ == '__main__':    headers = {'Referer':'http://music.163.com/','Host':'music.163.com','User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Ic','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'}bd=[560117127,560095569,19020312,559454416,159677693,560080737,2074743371] #歌单列表i = 2011data = []create_songlist.create_table()for id in bd:get_ist(i,id)i = i+1create_songlist.insert_table(data)df = create_songlist.get_data()

create_songlist 文件

import sqlite3
import pandas as pd
def create_table():conn = sqlite3.connect('melon.db')print ("Opened database successfully")c = conn.cursor()c.execute('''CREATE TABLE MUSIC(ID INT      NOT NULL,song           TEXT    NOT NULL,singer            INT     NOT NULL,album        TEXT,year         INT);''')print ("Table created successfully")conn.commit()conn.close()def insert_table(data):   conn = sqlite3.connect('melon.db')c = conn.cursor()print("Opened database successfully")sql_word = "INSERT INTO MUSIC (ID,song,singer,album,year) VALUES (?,?,?,?,?);"c.executemany(sql_word,data)conn.commit()print( "Records created successfully")conn.close()def get_data():conn = sqlite3.connect('melon.db')#c = conn.cursor()print ("Opened database successfully")sql_word = "SELECT *  from MUSIC"#cursor = c.execute("SELECT *  from MUSIC")#cursor.fetchall()data1 = pd.read_sql(sql_word,conn)conn.close()return data1def test(): conn = sqlite3.connect('melon.db')c = conn.cursor()c.execute("select singer,count(*) from music group by 1 having count(*)>5 order by 2 desc")AN = c.fetchall()    conn.close()print (AN)

这篇关于网易云歌单爬取并保存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534788

相关文章

下载/保存/读取 文件,并转成流输出

最近对文件的操作又熟悉了下;现在记载下来:学习在于 坚持!!!不以细小而不为。 实现的是:文件的下载、文件的保存到SD卡、文件的读取输出String 类型、最后是文件转换成流输出;一整套够用了; 重点: 1:   操作网络要记得开线程; 2:更新网络获取的数据 切记用Handler机制; 3:注意代码的可读性(这里面只是保存到SD卡,在项目中切记要对SD卡的有无做判断,然后再获取路径!)

FFmpeg系列-视频解码后保存帧图片为ppm

在正常开发中遇到花屏时怎么处理呢?可以把解码后的数据直接保存成帧图片保存起来,然后直接看图片有没有花屏来排除是否是显示的问题,如果花屏,则代表显示无问题,如果图片中没有花屏,则可以往显示的方向去排查了。 void saveFrame(AVFrame* pFrame, int width, int height, int iFrame){FILE *pFile;char szFilename[

html记账本改写:数据重新布局,更好用了,没有localStorage保存版本

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>htm记账本</title><style>table {user-select: none;/* width: 100%; */border-collapse: collapse;}table,th,td {border: 1px solid bla

在项目中,控制权限保存时,如果多次修改权限,该如何写?

在项目中,控制权限保存时,如果多次修改权限,该如何写? 错误代码: package cn.itcast.crm.service.impl;import java.util.List;import javax.annotation.Resource;import org.apache.commons.lang.xwork.StringUtils;import org.springfr

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

0基础学习爬虫系列:网页内容爬取

1.背景 今天我们来实现,监控网站最新数据爬虫。 在信息爆炸的年代,能够有一个爬虫帮你,将你感兴趣的最新消息推送给你,能够帮你节约非常多时间,同时确保不会miss重要信息。 爬虫应用场景: 应用场景主要功能数据来源示例使用目的搜索引擎优化 (SEO)分析关键词密度、外部链接质量等网站元数据、链接提升网站在搜索引擎中的排名市场研究收集竞品信息、价格比较电商网站、行业报告制定更有效的市场策略舆情

python网络爬虫(五)——爬取天气预报

1.注册高德天气key   点击高德天气,然后按照开发者文档完成key注册;作为爬虫练习项目之一。从高德地图json数据接口获取天气,可以获取某省的所有城市天气,高德地图的这个接口还能获取县城的天气。其天气查询API服务地址为https://restapi.amap.com/v3/weather/weatherInfo?parameters,若要获取某城市的天气推荐 2.安装MongoDB

erlang学习:用ETS和DETS存储数据3,保存元组到磁盘

学习内容 ETS表把元组保存在内存里,而DETS提供了把Erlang元组保存到磁盘上的方法。DETS的最大文件大小是2GB。DETS文件必须先打开才能使用,用完后还应该正确关闭。如果没有正确关闭,它们就会在下次打开时自动进行修复。因为修复可能会花很长一段时间,所以先正确关闭它们再结束程序是很重要的。 DETS表有着和ETS表不同的共享属性。DETS表在打开时必须赋予一个全局名称。如果两个或更多

Spark—数据读取和保存

Spark—数据读取和保存

使用Python通过字节串或字节数组加载和保存PDF文档

处理PDF文件的可以直接读取和写入文件系统中的PDF文件,然而,通过字节串(byte string)或字节数组(byte array)来加载和保存PDF文档在某些情况下更高效。这种方法不仅可以提高数据处理的灵活性,允许开发者在内存中直接操作PDF,而且还能增强安全性,同时方便跨应用传输和网络传输。 本文将介绍如何使用Python通过字节串或字节数组来加载和保存PDF文档。 文章目录 创建P