【问题标题】:Writing data on separate rows in csv file in python在python中的csv文件中的不同行上写入数据
【发布时间】:2019-04-24 12:20:12
【问题描述】:

我想从 Hindustantimes.com 提取新闻标题。我有以下代码,但我在同一行的不同列中获取数据。我希望每个新闻都在单独的行上。谁能帮帮我吗。提前致谢。这是我的代码:

import requests
import bs4
import csv
res=requests.get('https://www.hindustantimes.com')
soup=bs4.BeautifulSoup(res.text,'lxml')

x=[]
for i in soup.select('div.subhead4'):
    x.append(i.text)

for i in soup.select('div.bigstory-mid-h3'):
    x.append(i.text)

for i in x:
    print(i)

with open('newz.csv','w') as cF:
    wr = csv.writer(cF)
    wr.writerow(x)

【问题讨论】:

    标签: python csv beautifulsoup python-requests


    【解决方案1】:

    简单的 .csv 文件,这里不使用 csv 模块

    with open('newz.csv','w') as cF:
      for x in soup.select('.subhead4 a'):
        cF.write(x.text + '\n')
    

    【讨论】:

      【解决方案2】:

      writerow 接受一个可迭代的写入:

      writerow(['a', 'b', 'c'])
      -> a,b,c
      

      此外,您无需在写入之前将数据附加到列表中。

      stories = soup.select('div.subhead4') + soup.select('div.bigstory-mid-h3')
      
      with open('output.csv', 'w') as f:
          writer = csv.writer(f)
          for headline in stories:
              writer.writerow([headline.text.strip()])
      

      【讨论】:

      • 这比做其他代码更有意义。干得好!
      【解决方案3】:
      res = requests.get('https://www.hindustantimes.com')
      soup = bs4.BeautifulSoup(res.text,'lxml')
      
      x=[]
      for i in soup.select('div.subhead4'):
          x.append(i.text.strip())
      
      for i in soup.select('div.bigstory-mid-h3'):
          x.append(i.text.strip())
      
      
      with open('newz.csv','w') as cF:
          wr = csv.writer(cF)
          for i in x:
              wr.writerow([i])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-30
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 2015-01-21
        相关资源
        最近更新 更多