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

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 关于c++外部库文件宏的问题,求解
  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误