一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python實現(xiàn)提取谷歌音樂搜索結(jié)果的方法

Python實現(xiàn)提取谷歌音樂搜索結(jié)果的方法

2020-07-21 10:44yaoboyuan Python

這篇文章主要介紹了Python實現(xiàn)提取谷歌音樂搜索結(jié)果的方法,涉及Python針對谷歌音樂相關(guān)信息的獲取技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)提取谷歌音樂搜索結(jié)果的方法。分享給大家供大家參考。具體如下:

Python的簡單腳本,用于提取谷歌音樂搜索頁面中的歌曲信息,包括歌曲名,作者,專輯名,現(xiàn)在鏈接等,最多只提取10頁結(jié)果。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#! /usr/bin/env python
#coding=utf-8
'''
Created on 2011-8-19
@author: yaoboyuan
'''
from urllib import request,parse
import re,sys
def extractSongRawData(text):
  '抓取每一首歌的原始數(shù)據(jù)'
  text = re.sub('\n+','',text)
  songList = re.findall('\<tbody.*?\</tbody>',text)
  nums = len(songList)
  print('search ' + str(nums) + ' songs')
  return songList
def translate(text):
  '去掉text中的無用字符,轉(zhuǎn)換unicode碼'
  text = re.sub('\<b>','',text)
  text = re.sub('\</b>','',text)
  #find the &#25104; and translate into chinese
  s = re.findall('&#([0-9]+);',text)
  if len(s)<=0:
    return text
  else:
    text = ''
    for i in range(len(s)):
      value = int(s[i],10) #from str'123' to 10 base's int 124
      text += chr(value)  #from value to char
    return text
def extractSongName(song):
  '提取歌曲名字'
  td = re.findall('(?:\<td class\="Title).*(?:\</td>)',song)
  name = re.findall('.+?\<a.+?>(.*?)\</a>',td[0])
  songName = translate(name[0])
  return songName
def extractAuthorName(song):
  '提取作者名字'
  td = re.findall('(?:\<td class\="Artist).*(?:\</td>)',song)
  name = re.findall('.+?\<a.+?>(.*?)\</a>',td[0])
  authorName = name[0]
  authorName = translate(authorName)
  return authorName
def extrackAlbumName(song):
  '提取專輯名字'
  td = re.findall('(?:\<td class\="Album).*(?:\</td>)',song)
  name = re.findall('.+?\<a.+?>(.*?)\</a>',td[0])
  albumName = translate(name[0])
  return albumName
def extractID(song):
  '提取歌曲id'
  td = re.findall('''\<tbody id\="([a-zA-Z0-9]+)"''',song)
  if len(td)>0:
    return td[0]
  else:
    return song
def extractLink(song):
  '提取歌曲下載鏈接'
  td = re.findall('''\<td class\="Icon.*?(?=title\="下載").*?onclick\="(.*?)>''',song)
  if len(td) == 0:
    return 'NULL'
  s = str(td[0])
  rawLink = re.findall('http.*?(?=\?)',s)
  if len(rawLink) == 0:
    return s
  link = rawLink[0]
  link = re.sub('%3D','=',link)
  id = extractID(song)
  return link + '?id=' + id
def extractPageNums(text):
  '提取返回結(jié)果的頁數(shù),最多要10頁'
  pageList = re.findall('page_link',text)
  return len(pageList)
def extractSongInfo(song):
  '提取歌曲信息,返回歌曲列表'
  songList = []
  for i in range(len(song)):
    songName = extractSongName(song[i])
    authorName = extractAuthorName(song[i])
    albumName = extrackAlbumName(song[i])
    link = extractLink(song[i])
    songItem = [songName,authorName,albumName,link]
    songList.append(songItem)
    index = ''
    if i<9:
      index = '0' + str(i+1)
    else:
      index = str(i + 1)
    #print(index + ' ' + songName + ' ' + authorName + ' ' + albumName + ' ' + link)
  return songList
def main():
  while True:
    url = 'http://www.google.cn/music/search?q='
    key = input('請輸入歌曲名字或關(guān)鍵字:')
    key = parse.quote(key) #統(tǒng)一編碼成utf-8
    url += key
    mf = request.urlopen(url)
    c = mf.readall()
    c = str(c,encoding = 'utf-8')
    num = extractPageNums(c)
    print(str(num+1) + ' pages found')
    song = extractSongRawData(c)
    songList = extractSongInfo(song)
    #if the result great than 2 pages, then request all pages
    if num>0:
      for i in range(num):
        start = (i+1)*20
        next_page = '&cat=song&start=%d'%(start)
        #next_page = parse.quote(next_page) #統(tǒng)一編碼成utf-8
        url += next_page
        mf = request.urlopen(url)
        c = mf.readall()
        c = str(c,encoding = 'utf-8')
        song = extractSongRawData(c)
        songList += extractSongInfo(song) #find all results
    for i in range(len(songList)): #print the result
      index = ''
      if i<9:
        index = '0' + str(i+1)
      else:
        index = str(i + 1)
      print(index + ' ' + str(songList[i]))
if __name__ == '__main__':
  main()

希望本文所述對大家的Python程序設(shè)計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: ipx358cn出差被男上司在线 | 97色资源| 国产成人精品免费午夜 | 女人和拘做受全过程免费 | jzzjlzz亚洲乱熟在线播放 | 国产欧美一区视频在线观看 | 色一级| 欧美一区二区三区高清不卡tv | 国产亚洲精品一区在线播 | 日本在线小视频 | 全彩孕交漫画福利啪啪吧 | 男人视频网站 | 女八把屁股扒开让男生添 | 艾秋麻豆果冻剧传媒在线播放 | 国产一区二区在线观看美女 | 鬼吹灯之天星术免费观看 | 北岛玲亚洲一区在线观看 | 99九九成人免费视频精品 | 久久久久免费视频 | 99久久久久久久 | 欧美成人中文字幕 | 精品人人做人人爽久久久 | 亚洲无总热门 | 91精品国产亚洲爽啪在线影院 | 国产精品青青青高清在线观看 | 叛佛 作者满栀小说免费阅读 | 美女模特被c免费视频 | 97导航| 欧美一区二区三区免费高 | 睡男神的这件小事小说在线阅读 | 国产福利专区精品视频 | 女人叉开腿让男人捅 | 99在线精品日韩一区免费国产 | 日韩国产欧美精品综合二区 | 国产精品亚洲w码日韩中文 国产精品香蕉在线观看不卡 | 国产高清在线精品一区二区三区 | 国产精品久久亚洲一区二区 | 亚洲国产在线2o20 | 亚洲ⅴa偷拍在线影院 | 国产精品久久国产三级国电话系列 | 双夫1v2|