【问题标题】:Writing to CSV, not every element is being appended to file写入 CSV,并非每个元素都附加到文件中
【发布时间】:2021-02-27 23:25:34
【问题描述】:

我正在使用 beautifulsoup 来查找网页中某个类的所有实例,但是...

当我尝试将其写入 CSV 文件时

soup_string = str(element.get_text())
with open('finallist.csv', mode='a') as final_list:
    stock_writer = csv.writer(final_list, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    stock_writer.writerow([ticker, defunct.text])

它只将一项写入 CSV,如 so.

尽管实际输出为this.

【问题讨论】:

  • 您是否有尝试写入 CSV 文件的数据样本?我的猜测是你需要遍历数据列表中的所有项目,因此,你只写一行。
  • 使用beautifulsoup我正在收集所有匹配_20mbifX838(site:OTCMarkets.com) defunct = soup.find_all("a", ("_20mbifX838"))的类
  • 抱歉,忘记通知你了,@JacobLee
  • 什么是defunct?这张图是怎么做出来的? csv 文件包含什么?
  • 正如 Jacob 所说,您发布的代码恰好将一行写入 CSV,而它写入的行与 soup_string 无关。如果您希望得到帮助,您需要向我们展示上下文。这是在循环吗?向我们展示循环。

标签: python csv beautifulsoup


【解决方案1】:

如果你使用.find_all() 你有太多循环,因为它可能包含多个元素的 ResultSet 对象。

soup = BeautifulSoup(html_source, 'html.parser')
defunct = soup.find_all("a", ("_20mbifX838"))

with open('finallist.csv', mode='a') as final_list:
    stock_writer = csv.writer(final_list, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    for element in defunct:
        stock_writer.writerow([ticker, element.text])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2017-02-26
    • 2019-02-19
    相关资源
    最近更新 更多