2016-12-16 34 views
0

這個代碼有什麼問題我正在使用python 2.7.2 我想創建一個python腳本,可以自動查找歌曲的歌詞它是一個項目我有一直致力於錯誤沒有JSON對象可以解碼

import codecs 
import json 
import sys 
import urllib 
import urllib2 

import bs4 

def extract_lyrics(page): 
    """Extract lyrics text from given lyrics.wikia.com html page.""" 
    soup = bs4.BeautifulSoup(page) 
    result = [] 
    for tag in soup.find('div', 'lyricbox'): 
     if isinstance(tag, bs4.NavigableString): 
      if not isinstance(tag, bs4.element.Comment): 
       result.append(tag) 
     elif tag.name == 'br': 
      result.append('\n') 
    return "".join(result) 

artist = raw_input("Enter artist:") 
song = raw_input("Enter song:") 

query = urllib.urlencode(dict(artist=artist, song=song, fmt="realjson")) 
response = urllib2.urlopen("http://lyrics.wikia.com/api.php?" + query) 
data = json.load(response) 

if data['lyrics'] != 'Not found': 

    print(data['lyrics']) 

    lyrics = extract_lyrics(urllib2.urlopen(data['url'])) 
    filename = "[%s] [%s] lyrics.txt" % (data['artist'], data['song']) 
    with codecs.open(filename, 'w', encoding='utf-8') as output_file: 
     output_file.write(lyrics) 
    print("written '%s'" % filename) 
else: 
    sys.exit('not found') 

它給了我這個錯誤

Traceback (most recent call last): 
    File "C:\Users\elaya\Desktop\Song.py", line 26, in <module> 
    data = json.load(response) 
    File "C:\Python27\lib\json\__init__.py", line 291, in load 
    **kw) 
    File "C:\Python27\lib\json\__init__.py", line 339, in loads 
    return _default_decoder.decode(s) 
    File "C:\Python27\lib\json\decoder.py", line 364, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode 
    raise ValueError("No JSON object could be decoded") 
ValueError: No JSON object could be decoded 

請幫我

+1

您已檢查了'response'變量看它實際上所有 – danidee

回答

1

你應該看看什麼反應居然是。當我嘗試使用這些參數的URL時,我會得到一個mediawiki幫助頁面;通讀,似乎你需要提供一個action參數值爲lyrics

query = urllib.urlencode(dict(action='lyrics', artist=artist, song=song, fmt="realjson")) 
+0

感謝在返回JSON這麼多,你救了我的項目,我真的不知道該怎麼感謝你 –