爬取周杰倫歌曲信息分別保存爲excel文件和存入MySQL數據庫以及發送到你的郵箱中

大家好,我是天空之城,今天給大家帶來,爬取周杰倫歌曲信息分別保存爲excel文件和存入MySQL數據庫,此處周董可以替換爲任意一位歌手,還可以將歌曲信息全部發送到任何一個人的郵箱中

第一部分,爬取周董歌曲信息分別保存爲excel文件

import requests, openpyxl

wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = 'geci'

sheet['A1'] = '歌曲名'  # 加表頭,給A1單元格賦值
sheet['B1'] = '所屬專輯'  # 加表頭,給B1單元格賦值
sheet['C1'] = '播放時長'  # 加表頭,給C1單元格賦值
sheet['D1'] = '播放鏈接'  # 加表頭,給D1單元格賦值
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
for x in range(5):

    params = {
        'ct': '24',
        'qqmusic_ver': '1298',
        'new_json': '1',
        'remoteplace': 'sizer.yqq.song_next',
        'searchid': '64405487069162918',
        't': '0',
        'aggr': '1',
        'cr': '1',
        'catZhida': '1',
        'lossless': '0',
        'flag_qc': '0',
        'p': str(x + 1),
        'n': '20',
        'w': '周杰倫',
        'g_tk': '5381',
        'loginUin': '0',
        'hostUin': '0',
        'format': 'json',
        'inCharset': 'utf8',
        'outCharset': 'utf-8',
        'notice': '0',
        'platform': 'yqq.json',
        'needNewCode': '0'
    }

    res_music = requests.get(url, params=params)
    json_music = res_music.json()
    list_music = json_music['data']['song']['list']
    for music in list_music:
        # print(music['name'])
        # print('所屬專輯:' + music['album']['name'])
        # print('播放時長:' + str(music['interval']) + '秒')
        # print('播放鏈接:https://y.qq.com/n/yqq/song/' + music['file']['media_mid'] + '.html\n\n')

        name = music['name']
        album = music['album']['name']
        time = str(music['interval'])
        link = 'https://y.qq.com/n/yqq/song/' + music['file']['media_mid'] + '.html\n\n'

        row = [name, album, time, link]
        sheet.append(row)
wb.save('zhoujielun1.xlsx')

看下Excel截圖
在這裏插入圖片描述

第二部分,爬取周董(任何一個人)歌曲信息發送到任何一個人郵箱

import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText
from email.header import Header


headers = {
      'Referer': 'https://movie.douban.com/top250?start=1&filter=',
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:46.0) Gecko/20100101 Firefox/46.0'}
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'

list_all=[]

def getdata():
    name0 = input('請輸入歌手名字:')
    for x in range(5):
        params = {
            'ct': '24',
            'qqmusic_ver': '1298',
            'new_json': '1',
            'remoteplace': 'sizer.yqq.song_next',
            'searchid': '64405487069162918',
            't': '0',
            'aggr': '1',
            'cr': '1',
            'catZhida': '1',
            'lossless': '0',
            'flag_qc': '0',
            'p': str(x + 1),
            'n': '20',
            'w': name0,
            'g_tk': '5381',
            'loginUin': '0',
            'hostUin': '0',
            'format': 'json',
            'inCharset': 'utf8',
            'outCharset': 'utf-8',
            'notice': '0',
            'platform': 'yqq.json',
            'needNewCode': '0'
        }

        res_music = requests.get(url, params=params,headers=headers)
        json_music = res_music.json()
        list_music = json_music['data']['song']['list']
        for music in list_music:
            name = music['name']
            album = music['album']['name']
            time = str(music['interval'])
            link = 'https://y.qq.com/n/yqq/song/' + music['file']['media_mid'] + '.html\n\n'
            list_all.append(name + '\n' + album + '\n' + time+'s' + '\n' + link )
    return '\n\n'.join(list_all)

def send_email(list):
    mailhost = 'smtp.qq.com'
    qqmail = smtplib.SMTP()
    qqmail.connect(mailhost, 25)
    qqmail.login(account, password)
    content = '親愛的,今天的推薦歌曲是:' + list
    message = MIMEText(content, 'plain', 'utf-8')
    subject = '今日推薦'
    message['Subject'] = Header(subject, 'utf-8')
    try:
        qqmail.sendmail(account, receiver, message.as_string())
        print('郵件發送成功')
    except:
        print('郵件發送失敗')
    qqmail.quit()

if __name__ == '__main__':
    account = input('請輸入你的郵箱:')
    password = input('請輸入你的郵箱密碼:')
    receiver = input('請輸入收件人:')
    mess = getdata()
    send_email(mess)

第三部分,爬取周董(任何一個人)歌曲信息存入MySQL數據庫
第一小步,先建表


import pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='你的數據庫密碼', db='你的數據庫名稱', charset='utf8')

cursor = conn.cursor()


sql = """create table qqmusic3(
        m_id int primary key auto_increment,
        m_name varchar (100) not null,
        m_album text null,
        m_time varchar(10) not null,
        m_link varchar(100) not null
        
        )"""

cursor.execute(sql)

cursor.close()
conn.close()

第二小步,爬取數據存入數據庫


import requests,pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='你的數據庫密碼', db='你的數據庫名稱', charset='utf8')

cursor = conn.cursor()

name0=input('請輸入你要爬取歌手的名字')

headers={'Referer':'https://y.qq.com/',
    'User-Agent':'pgv_pvid=1717322000; ts_uid=6297933380; pgv_pvi=3979401216; RK=+ZbNcEN3Qw; ptcz=4278eb1e104c210e009b4fa2e86ef406c85fb5712664ab041b0ec59f39a70f78; ts_refer=www.baidu.com/link; yqq_stat=0; pgv_info=ssid=s7548246693; pgv_si=s6134429696; ts_last=y.qq.com/'

}

url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
for x in range(5):

    params = {
        'ct': '24',
        'qqmusic_ver': '1298',
        'new_json': '1',
        'remoteplace': 'sizer.yqq.song_next',
        'searchid': '64405487069162918',
        't': '0',
        'aggr': '1',
        'cr': '1',
        'catZhida': '1',
        'lossless': '0',
        'flag_qc': '0',
        'p': str(x + 1),
        'n': '20',
        'w': name0,
        'g_tk': '5381',
        'loginUin': '0',
        'hostUin': '0',
        'format': 'json',
        'inCharset': 'utf8',
        'outCharset': 'utf-8',
        'notice': '0',
        'platform': 'yqq.json',
        'needNewCode': '0'
    }

    res_music = requests.get(url, params=params,headers=headers)
    json_music = res_music.json()
    list_music = json_music['data']['song']['list']
    for music in list_music:
        # print(music['name'])
        # print('所屬專輯:' + music['album']['name'])
        # print('播放時長:' + str(music['interval']) + '秒')
        # print('播放鏈接:https://y.qq.com/n/yqq/song/' + music['file']['media_mid'] + '.html\n\n')

        name = music['name']
        album = music['album']['name']
        time = str(music['interval'])
        link = 'https://y.qq.com/n/yqq/song/' + music['file']['media_mid'] + '.html\n\n'
        sql = 'insert into qqmusic3(m_name,m_album, m_time,m_link) values ("%s","%s","%s","%s")' % (
            name,album,time, link)

        cursor.execute(sql)



conn.commit()
cursor.close()
conn.close()


看一下數據庫的數據
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章