【问题标题】:weird csv output using python使用python的奇怪的csv输出
【发布时间】:2018-06-20 16:28:21
【问题描述】:

我最近尝试抓取 http://quotes.toscrape.com/ 引号(仅在第一页上)并将它们保存到 csv 文件中。我得到了一个非常奇怪的结果。只有逗号用作分隔符。请参阅下面的屏幕截图和代码:

from bs4 import BeautifulSoup
from urllib.request import urlopen
import csv

csvfile = open('quotes.csv', 'w')
writer = csv.writer(csvfile)
writer.writerow(('text'))


def parse():
    html = urlopen('http://quotes.toscrape.com/page/1/')
    bs = BeautifulSoup(html, 'lxml')
    quotes = bs.findAll('div', class_='quote')
    for quote in quotes:
        try:
            text = quote.find('span', class_='text').getText(
            ).replace(',', '|').replace('"', '')
            print(text)
            writer.writerow((text))
        except UnicodeEncodeError:
            break

parse()
csvfile.close()

【问题讨论】:

  • 定义“奇怪的结果”

标签: python csv screen-scraping


【解决方案1】:

您尝试使用带有元组的写入行,但是(奇怪的怪癖)您实际上并没有使用元组。

看我的例子:

some_num = (1)
some_tuple = (1,)

改变这一行:

        writer.writerow((text))

        writer.writerow((text,))

注意逗号:)

但为什么会这样呢?

而不是将它分解为遍历字符串,就好像它是单个字符的元组一样,例如

>>> for character in "this string":
...     print(character)
t
h
i
s

s
t
r
i
n
g

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多