2017-09-23 20 views
0

我想直接颳去的API歌詞和打印的響應到csv文件,像這樣:Pyhton - API響應保存到CSV文件中的一個for循環

def scrape_genius_lyrics(urls): 

    all_lyrics=[] 

    headers = {'Authorization': 'mytoken'} 
    base_url = 'https://genius.com/' 

    with codecs.open('genius.csv', 'ab', encoding='utf8') as outputfile: 
     outwriter = csv.writer(outputfile) 

    for url in urls: 
     page_url = base_url + url 
     try: 
      page = requests.get(page_url, headers=headers) 
      html = BeautifulSoup(page.text, "html.parser") 
      [h.extract() for h in html('script')] 
      lyrics = html.find('div', class_='lyrics').get_text()   
      # outwriter.writerow(lyrics) 
      all_lyrics.append(lyrics) 
      print lyrics 
     except: 
      'could not find page for {}'.format(url) 
然而

,我只看到,如果響應我評論#outwriter.writerow(lyrics),否則程序停止並不打印歌詞。

如何保存到csv文件每個歌詞到自己的行,在每次迭代?

+0

'[h.extract()for h(html)'('script')]'自己沒做什麼......你想保存那個列表嗎? –

回答

0

您可能應該縮進for循環以保持打開。

with codecs.open('genius.csv', 'ab', encoding='utf8') as outputfile: 
    outwriter = csv.writer(outputfile) 

    for url in urls: 
     page_url = base_url + url 
     ... 

你也應該決定是否真的需要存儲all_lyrics在內存中,而你寫的相同信息的文件。

您可以隨時重新打開文件並在稍後獲取all_lyrics

相關問題