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

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日

悬赏问题

  • ¥15 生物医学数据分析。基础课程就v经常唱课程舅成牛逼
  • ¥15 云环境云开发云函数对接微信商户中的分账功能
  • ¥15 空间转录组CRAD遇到问题
  • ¥20 materialstudio计算氢键脚本问题
  • ¥15 有没有代做有偿主要做数据可视化部分即可(2023全国高考更省一本线理科类)
  • ¥15 配置FPT报错,该如何处理
  • ¥15 请大家看一下这个代码咋写,一点思路都没有,最好能做一下,不要伪代码,有偿
  • ¥15 有偿请人帮写个安卓系统下禁止装软件及禁止拷入文件的程序
  • ¥100 用 H.265 对音视频硬编码 (CUDA)
  • ¥20 mpich安装完成后出问题