2017-06-26 8 views
0

私は、このコードスニペットを大きなファイルの一部として持っています。私がそれを実行すると、forループの出力は私が探しているものであり、うまく印刷されます。ただし、最後の項目のテキストのみが.txtファイルに保存されます。私はPythonには新しく、これはシンプルで初心者の間違いだと感じていますが、私はここで困惑しています。一番上に新しいファイルを作ってその問題を解決すると思ったが、運がない。リスト内の最後の項目のみが保存されます

with open("all_ctrl_pk_articles.txt","w") as f: 
     f.write("") 
     for url in ctrl_pk_list: 
      re = requests.get(url) 
      soup = BeautifulSoup(re.content, "html.parser") 
      g_data = soup.find_all("div", {"class": "story-body-supplemental"}) 
      for item in g_data: 
       print item.contents[1].text #WANT TO SAVE THIS TEXT 
       source_code = requests.get(url) 
       plain_text = source_code.text 
       soup = BeautifulSoup(plain_text, "html.parser") 
       #print soup.text 
       newsoup = soup.text 
      f.write(newsoup) 

     with io.open("all_ctrl_pk_articles.txt","a", encoding = "utf-8") as f: 
      f.write(newsoup) 
    f.close() 
+1

あなたの 'print'は内側のループにあります。そこにあなたの '書き込み'もしたくないですか?また、改行がなければ改行を書く必要があります。 – kabanus

+1

書き込み呼び出しはループ内にある必要があります。または、再割り当てする代わりにnewsoupに追加する必要があります。ループを通過するたびに、 "newsoup = soup.text"は単にその名前を新しいデータに再割り当てします。あなたはあなたのデータに追加したい。 –

答えて

0

あなたの問題は

(あなたはまた、「追加」するか、そうでなければ上書きされ得るだろう「書き込み」に変更する必要があります)あなたはループの中にファイルへの書き込みをしていないということです

with open("all_ctrl_pk_articles.txt","a") as f: 
     f.write("") 
     for url in ctrl_pk_list: 
      re = requests.get(url) 
      soup = BeautifulSoup(re.content, "html.parser") 
      g_data = soup.find_all("div", {"class": "story-body-supplemental"}) 
      for item in g_data: 
       print item.contents[1].text #WANT TO SAVE THIS TEXT 
       source_code = requests.get(url) 
       plain_text = source_code.text 
       soup = BeautifulSoup(plain_text, "html.parser") 
       #print soup.text 
       newsoup = soup.text 
       f.write(newsoup) #Put this in the loop 

     with io.open("all_ctrl_pk_articles.txt","a", encoding = "utf-8") as f: 
      f.write(newsoup) 
    f.close() 
関連する問題