wiwj7777 2022-01-28 21:01 采纳率: 100%
浏览 70
已结题

json 爬取数据数据后,如何存为excel

TypeError: export_excel() missing 1 required positional argument: 'item'
麻烦帮忙看一下代码哪里错了。万分感谢!


import json
import pandas as pd
import time
import requests

headers = {
    'user-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69',
    'referer': 'http://www.cninfo.com.cn/new/commonUrl/pageOfSearch?url=disclosure/list/search&lastPage=index',
    'X-Requested-With': 'XMLHttpRequest'
}

for i in range(48):
    data = {'column': 'szse',
            'pageNum': i+1,
            'pageSize': 30,
            'tabName': 'fulltext',
            'plate': '',
            'stock': '',
            'searchkey': '并购',
            'secid': '',
            'category': '',
            'trade': '',
            'seDate': '2019-12-31~2021-12-31',
            'sortName': '',
            'sortType': '',
            'isHLtitle': 'true'}
    d = requests.post('http://www.cninfo.com.cn/new/hisAnnouncement/query', headers=headers, data=data).json()

    for item in d['announcements']:
        code=item['secCode']
        name=item['secName']
        title3=item['announcementTitle']
        title2=title3.replace('<em>', '')
        title=title2.replace('</em>', '')
        print(code)
        print(name)
        print(title)
        announcementTime = str(item['announcementTime'])  # 发布时间是时间戳,格式要转下
        announcementTime = int(announcementTime[0:len(announcementTime) - 3])
        announcementTime = time.localtime(announcementTime)
        time2=time.strftime("%Y-%m-%d", announcementTime)
        url=item['adjunctUrl']
        print(time2)
        print(url)
        print('---------------')
        print(item)

        def export_excel(item):
            pf = pd.DataFrame(list(item))  #将字典列表转换为DataFrame
            order = ['code', 'name', 'title', 'url', 'time2']  #指定字段顺序
            pf = pf[order]
            columns_map={'code': '代码', 'name': '公司简称', 'title': '标题', 'url': '网址', 'time2': '发布时间'} #将列名替换为中文
            pf.rename(columns=columns_map, inplace=True)
            file_path=pd.ExcelWriter('C:/Users/Dell/Desktop/test/并购公告/2019-2021并购公告.xlsx') #指定生成的Excel表格名称
            pf.fillna('', inplace=True)  #替换空单元格
            pf.to_excel(file_path, encoding='utf-8', index=False)  #输出
            file_path.save()
        if __name__=='__main__':
            export_excel()  #将分析完成的列表导出为excel表格

  • 写回答

1条回答 默认 最新

  • Joker-Full-stack 2022-01-29 10:45
    关注
    
    import json
    import pandas as pd
    import time
    import requests
    
    LT_ITEM=[]
    headers = {
        'user-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69',
        'referer': 'http://www.cninfo.com.cn/new/commonUrl/pageOfSearch?url=disclosure/list/search&lastPage=index',
        'X-Requested-With': 'XMLHttpRequest'
    }
    def getItem():
        for i in range(48):
            data = {'column': 'szse',
                    'pageNum': i+1,
                    'pageSize': 30,
                    'tabName': 'fulltext',
                    'plate': '',
                    'stock': '',
                    'searchkey': '并购',
                    'secid': '',
                    'category': '',
                    'trade': '',
                    'seDate': '2019-12-31~2021-12-31',
                    'sortName': '',
                    'sortType': '',
                    'isHLtitle': 'true'}
            d = requests.post('http://www.cninfo.com.cn/new/hisAnnouncement/query', headers=headers, data=data).json()
        
            for item in d['announcements']:
                code=item['secCode']
                name=item['secName']
                title3=item['announcementTitle']
                title2=title3.replace('<em>', '')
                title=title2.replace('</em>', '')
                print(code)
                print(name)
                print(title)
                announcementTime = str(item['announcementTime'])  # 发布时间是时间戳,格式要转下
                announcementTime = int(announcementTime[0:len(announcementTime) - 3])
                announcementTime = time.localtime(announcementTime)
                time2=time.strftime("%Y-%m-%d", announcementTime)
                url=item['adjunctUrl']
                print(time2)
                print(url)
                print('---------------')
                print(item)
                LT_ITEM.append(item)
     
    def export_excel(item):
        pf = pd.DataFrame(list(item))  #将字典列表转换为DataFrame
        order = ['code', 'name', 'title', 'url', 'time2']  #指定字段顺序
        # pf = pf[order]
        columns_map={'code': '代码', 'name': '公司简称', 'title': '标题', 'url': '网址', 'time2': '发布时间'} #将列名替换为中文
        pf.rename(columns=columns_map, inplace=True)
        file_path=pd.ExcelWriter('C:/Users/Dell/Desktop/test/并购公告/2019-2021并购公告.xlsx') #指定生成的Excel表格名称
        pf.fillna('', inplace=True)  #替换空单元格
        pf.to_excel(file_path, encoding='utf-8', index=False)  #输出
        file_path.save()
    if __name__=='__main__':
        getItem()
        export_excel(LT_ITEM)  #将分析完成的列表导出为excel表格
    

    就是你少传了参数进去,改了一下除了路径外,是可以直接导出了

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

报告相同问题?

问题事件

  • 系统已结题 2月6日
  • 已采纳回答 1月29日
  • 创建了问题 1月28日

悬赏问题

  • ¥66 定制开发肯德基自动化网站下单软件
  • ¥20 vscode虚拟环境依赖包未安装
  • ¥15 odoo17关于owl开发js代码问题
  • ¥15 光纤中多普勒频移公式的推导
  • ¥15 怎么制作一个人脸识别门禁系统
  • ¥20 大华dss监控平台网络关闭登不进去
  • ¥15 请使用蚁群算法解决下列问题,并给出我完整的代码
  • ¥20 关于php录入完成后,批量更新数据库
  • ¥15 请教往复密封润滑问题
  • ¥15 cocos creator发布ios包