python写入列出csv作为列

时间:2017-12-16 21:48:39

标签: python csv listings

我想将列表作为coloumns写入csv。 每个列表都有超过100个输出。我举了下面的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中写信?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

通过使用"通配符"实际上,您可以在单个循环中匹配所有需要的元素。定位器:

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

其中^=表示"以"。

开头