循环一个csv,试图写入另一个csv

时间:2018-05-23 14:25:34

标签: python csv beautifulsoup

我正在遍历csv链接,访问这些链接,然后尝试将这些链接中的信息写入新文件:

with open("hrefs.csv", "rb") as f:
    reader = csv.reader(f)

    for row in reader:
        newUrl = row[0]

        response = requests.get(newUrl)
        newData = response.text
        newSoup = BeautifulSoup(newData, 'lxml')
        newstring = ''

        titles = newSoup.findAll('span', {'id': 'titletextonly'})
        prices = newSoup.findAll('span', {'class': 'price'})
        newstring += titles[0].text + ',' + prices[0].text + ','
        for ana in newSoup.findAll('p',{'class':'attrgroup'}):
            for myb in ana.findAll('b'):
                newstring += myb.text + ','
        print newstring
        listFile = open("output.csv", 'wb')
        writer = csv.writer(listFile)
        writer.writerow(newstring.encode('ascii', 'ignore').decode('ascii'))

我遇到了一些问题。 首先,我认为csv会意识到有逗号分隔的值并将每个属性放在一个新列中。 第二次,似乎每个列中都有一个字母。当我简单地print每个newstring时,它会给我一个连贯的字符串。

1 个答案:

答案 0 :(得分:1)

您需要为writer.writerow提供一系列字符串:

writer.writerow(newstring.split(","))

将是您目前所拥有的最简单的变化。