hardworker0 2022-06-09 22:36 采纳率: 100%
浏览 331
已结题

csv写入数据换行问题

写代码的时候发现,一条数据占一行,几百条数据要占掉好几百行




import asyncio
import pyppeteer
import requests
import csv
 
# 使用async关键字定义异步函数:
async def main(url):
    # 打开浏览器
    browser = await pyppeteer.launch(
        headless=False,
        # 设置浏览器界面尺寸
        args=['--window-size=1215,733'],
        # 设置页面尺寸
        defaultViewport={'width': 1215, 'height': 653}
    )
    # 新建页面
    page = await browser.newPage()
    await asyncio.sleep(3.5)
    # 访问页面
    await page.goto(url)
    # 设置延迟时间
    await asyncio.sleep(3.5)
    # 结合for循环,使用click功能模拟点击翻页
    for page_num in range(1, 63):
        # 使用querySelectorAll功能获取单页全部评论数据:class='single_comment'
        comment_data = await page.querySelectorAll('td[width]')
        # 使用for循环遍历获取到的单页全部评论数据
        for data in comment_data:
            for i in range(7):
                comment_name = await data.querySelector('span')
                if comment_name == 'NoneType':
                    print('无')
                    break
                else:
                    comment_name = await comment_name.getProperty('title')
                    comment_name = await comment_name.jsonValue()
                    print(comment_name)
                    #表头:'项目批准号','项目类别','学科分类','项目名称','立项时间','项目负责人','专业职务','工作单位'
                    csv_file = open('spider.csv','a+',encoding='GB18030',newline='')
                    w = csv.writer(csv_file)
                    w.writerow([comment_name])
                    break
 
        # 如果有多页评论数据,当进入最后一页评论页的时候 a[rel="next"] 不存在,跳出循环
        if page_num == 62:
            break
        else:
            await page.click('a[rel="next"]')
            await asyncio.sleep(4)
    # 关闭页面
    await page.close()
    # 关闭浏览器
    await browser.close()
 
url = "http://fz.people.com.cn/skygb/sk/index.php/index/seach/?pznum=0&xmtype=%E4%B8%AD%E5%8D%8E%E5%AD%A6%E6%9C%AF%E5%A4%96%E8%AF%91%E9%A1%B9%E7%9B%AE&xktype=0&xmname=&lxtime=0&xmleader=&zyzw=0&gzdw=&dwtype=0&szdq=0&ssxt=0&cgname=&cgxs=0&cglevel=0&jxdata=0&jxnum=&cbs=&cbdate=0&zz=&hj="
# 使用get_event_loop()创建异步事件循环
loop = asyncio.get_event_loop()
# 使用run_until_complete()运行异步事件循环
loop.run_until_complete(main(url))
# 关闭异步事件循环
loop.close()

请大家指点一下迷津

  • 写回答

1条回答 默认 最新

  • IT鸠摩智 2022-06-10 01:13
    关注

    你想要,换行呢?还是不换行呢?,你在写入文件的时候是追加模式,尽量用pandas,pandas可以随心所欲的操作表,合并表,拆分表

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月9日

悬赏问题

  • ¥150 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装