2017-12-16 6 views
-2

私はcoloumnsとしてcsvにリストを書きたいと思う。 すべてのリスティングに100を超える出力があります。私は_ = 'モデルの がどのように私は、CSV形式での書き込みが可能また、クラスのように感謝pythonを書く列としてcsvを書く

csv output example: 
     coloumn 1   coloumn 2    coloumn 3 coloumn 4 coloumn 5 
     listing 1_output1 listing 2_output1  ...   ...  ... 
     listing 1_output2 listing 2_output2  ...   ...  ... 
     listing 1_output3 listing 2_output3  ...   ...  ... 
     ...     ...     ...   ...  ... 


import bs4 as bs 
import urllib.request 
import csv 
sauce = urllib.request.urlopen('http...').read() 

soup = bs.BeautifulSoup(sauce, 'lxml') 



for listing in soup.find_all('div', class_='bigletter1'): 

for listing2 in soup.find_all('td', class_='bigletter2'): 

for listing3 in soup.find_all('td', class_='bigletter3'): 

for listing4 in soup.find_all('td', class_='bigletter4'): 

for listing5 in soup.find_all('td', class_='bigletter5'): 

は、あなたの答えをありがとう だけでなく、私は非数値クラスを持っている 下にCSVの例を与えますか?

+0

(ようこそ!)誰かに英語を教えてもらえますか?つまり、あなたの投稿は意味をなさない。 "coloumn"と "listining"のようなものを除外しているスペルチェッカーでさえ、私はlist *が* list *と呼ばれるかもしれないと推測することができ、 'output'は* value *または* line */*記録*。 – greybeard

+0

soup.find.allコマンドの出力結果です。 – rademem

+0

すべての 'listing'sには同じ数の項目がありますか? – greybeard

答えて

0

rangeを使用して各リスティングを繰り返します。 listに追加してください。

data = [] 

for i in range(1, 6): 
    data.append([]) 
    for listing in soup.find_all('div', class_='bigletter{}'.format(i)): 
     data[-1].append(listing.text) 

は今、dataは次のように多少見えます - サブリストとして各

[listing1, 
listing2, 
... 
] 

。私たちが必要とするのは、データをCSVに簡単に書き込むための転置です。これは、逆zipで行うことができます。 csvモジュールを使用し、各行をCSVファイルに書き込んでください。

import csv 

with open(file, 'w') as f: 
    w = csv.writer(f) 
    for row in zip(*data):   
     w.writerow(row) 
+0

(私は確信していた場合、私はこの答えが素晴らしいと思います。 – greybeard

0

は、あなたが実際に「ワイルドカード」ロケータを持つことにより、単一のループ内のすべての必要な要素を一致させることができます。

for listing in soup.select('[class^=bigletter]'): 

^=手段は、「で始まります」。