【问题标题】:Csv doesn't generate when it [closed]CSV在[关闭]时不会生成
【发布时间】:2019-09-13 07:57:18
【问题描述】:

它不会生成。

当它这样做时,文件是空白的。

    import csv
import requests 
from bs4 import BeautifulSoup as bs
for i in range(3):
        r = requests.get('https://www.nairaland.com/search/afonja/0/0/0/{}'.format(i))
        soup = bs(r.content, 'lxml')
        occurrences = len(soup.select('.highlight')) #if soup.select_one('.highlight') else 
    z=[occurrences]
    with open('z.csv', 'w') as csv_file:
        writer = csv.writer(csv_file)
        writer.writerow([z]) 
   

更新:有人已经解决了。那个用户很清楚。

【问题讨论】:

  • total 是做什么的? z 现在对我来说最终是 [46]。这是你想要的吗?您的权限设置是否正确?你的代码对我有用。
  • 它假设显示范围的三个值。 Total 不是其中的一部分,我已对其进行了编辑
  • 您是否收到任何错误消息?
  • 您在每次迭代时替换文件,它会用不同的值覆盖文件三次,而不是将三个值写入同一个文件。但是一个正确的答案需要一个正确的问题来解释你真正想要什么。
  • 我希望从范围内获取的所有值都显示在 csv 文件中。 csv 上应该有 3 个值。

标签: python beautifulsoup export-to-csv


【解决方案1】:

您需要将所有出现的值收集到一个列表中,而不是每次循环都覆盖该列表。循环结束后,将列表写入 CSV 文件。

而且由于z已经是一个列表,所以在写入文件时不需要写[z]

import csv
import requests 
from bs4 import BeautifulSoup as bs
z = []
for i in range(3):
    r = requests.get('https://www.nairaland.com/search/afonja/0/0/0/{}'.format(i))
    soup = bs(r.content, 'lxml')
    occurrences = len(soup.select('.highlight'))
    z.append(occurrences)
with open('z.csv', 'w') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow(z) 

【讨论】:

  • 或者您可以在开始时打开,并在收集时逐渐写入。
  • 那行不通,因为它们将被写在不同的行上。他想要一行包含每个值的字段。
  • 谢谢,成功了
猜你喜欢
  • 2017-12-27
  • 2011-10-20
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2010-12-09
  • 1970-01-01
相关资源
最近更新 更多