2016-03-21 17 views
1

GoogleにLil Wayneの記事を検索するスクリプトがあり、記事ごとにtitle、summary、url、およびkeywordsが返されます。Python3:ショートスクリプトの情報をCSVファイルに保存する方法は?

しかし、タイトル、要約、URL、キーワードを列として持つCSVファイルを作成して、各行の記事ごとに関連情報を保存したいと考えています。

from newspaper import Article 
import google 

#Search Setup 
for url in google.search('Lil Wayne', num=10, stop=3, pause=0): 
    article = Article(url)  
    article.download() 
    article.parse() 
    article.nlp()  


    #Print the parsed output of each article 
    print(u'TITLE: ' + str(article.title.encode('ascii', 'ignore'))) 
    print(u'SUMMARY: ' + str(article.summary.encode('ascii', 'ignore'))) 
    print(u'URL: ' + str(article.url)) 
    print(u'KEYWORDS: ' + str(article.keywords)) 
    print("\n") 
+0

は、この実際にはPythonの3か? Python 3はテキスト文字列リテラルに 'u'プレフィックスを必要とせず、' str(article.title.encode( 'ascii'、 'ignore')) 'は面白いように動作します(' str'は 'repr'を返します)。 'bytes'オブジェクトは' encode'を返します)。 – ShadowRanger

+0

いずれにしても、実際に['csv' module docs](https://docs.python.org/3/library/csv.html)を確認することを強くお勧めします。これは主に定型文であり、そこにある例が始まるはずです。 – ShadowRanger

+0

こんにちは、 ええ、私はもともとこれをPython 2で書いています。私はデコードを台無しにしてしまいました。 私は最終的には次のエラーを取得: 'UnicodeDecodeError 「UTF-8」コーデックは位置170でバイト0x81とをデコードすることはできません:あなたはそれを持つまで何 byte'無効なスタートを知っていますか? – thewhitetie

答えて

2

あなたのコード内でこのようなものを使用することができます

from newspaper import Article 
import google 

with open('output_file.csv', 'wb') as csvfile: 
    lil_wayne_writer = csv.writer(csvfile) 

    #Search Setup 
    for url in google.search('Lil Wayne', num=10, stop=3, pause=0): 
     article = Article(url)  
     article.download() 
     article.parse() 
     article.nlp() 
     lil_wayne_writer.writerow(
      [ 
       str(article.title.encode('ascii', 'ignore')), 
       str(article.summary.encode('ascii', 'ignore')), 
       str(article.url), 
       str(article.keywords), 
      ] 
     ) 

は、これは基本的に、あなたが記事を見つけるのように各行を書き込み、CSVライターを開きます。 CSVライターに関する詳細がありますin the python docs

ご使用の環境で正しく動作するには少し編集する必要があります。

あなたは、単にこのような何かを単一の呼び出しを追加し、あなたのCSVファイルにヘッダを書きたい場合:

lil_wayne_writer.writerow(['TITLE', 'SUMMARY', 'URL', 'KEYWORDS']) 
+1

これが本当にPy3であると仮定すると、 'str'に' decode 'したい(または 'str'コンストラクタに2番目の引数を渡す)ことができます。それ以外の場合は、 'bytes'オブジェクトの' repr'を取得します。 str(article.title.encode( 'ascii'、 'ignore'))は 'str(article.title.encode( 'ascii'、 'ignore')、 'ascii')、' ' article.title.encode( 'ascii'、 'ignore')。decode( 'ascii')、 '。また、出力ファイルを 'newline'なしで' open( 'output_file.csv'、 'w'、newline = '') '' wb ''で開く必要があります。 Py3 'csv'モジュールはバイトベースではなく' str'ベースです。 – ShadowRanger

+0

Thanks @ ShadowRanger - Python3のチョップを改善するために、これらのオプションをリサーチリストに追加します:)。 – srowland

関連する問題