巨潮资讯网爬取年报(存在错误)

在尝试使用Python爬取巨潮资讯网年报数据时遇到错误,具体表现为'(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)'。这可能由于网络连接不稳定或者网站反爬策略导致,解决方法包括调整请求间隔、设置User-Agent、使用代理等。" 118059750,1477485,ASP.NET Core WebApi 前后端传参详解,"['.NET', 'C#', '后端开发', 'API接口', 'Web开发']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import requests
import string
import os.path
import pandas
import re
import time

# 请求头放在函数外面共用
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
}


# 1.定义获取org_id的函数,code为证券代码
def get_org_id(code):
    org_id_url = 'http://www.cninfo.com.cn/new/information/topSearch/query'
    org_id_data = {
        'keyWord': code,
        'maxNum': '10',
    }
    org_id_response = requests.post(url=org_id_url, data=org_id_data, headers=headers).json()
    # 从response中获取org_id
    for data in org_id_response:
        org_id = data['orgId']
        return org_id
    # org_id_response.close()
    return None

# 2.定义get_plate_colum, 获取plate: 深圳sz  或者  上海sh  或者 北京bj;third,以及column: 深圳szse   或者  上海sse  或者 北京bj
def get_plate_colum_compy_short_listing(code):
    # 如何在网址里加变量:在url前写一个f,就可以在url中以{}的形式写入变量
    # global colum, plate
    global colum, plate
    plate_url = f'http://www.cninfo.com.cn/data20/companyOverview/getCompanyIntroduction?scode={code}'
    plate_response = requests.get(url=plate_url, headers=headers).json()
    #json的解析提取,用在线网站转换格式,有字典就用序号,没字典就用键名
    plate_market = plate_response['data']['records'][0]['basicInformation'][0]['MARKET']
    # print(plate_market)
    compy_short  = plate_response['data']['records'][0]['basicInformation'][0]['ASECNAME']
    listing_date  = plate_response['data']['records'][0]['basicInformation'][0]['F006D']
    # address = plate_response['data']['records'][0]['basicInformation'][0]['F004V']    #获取地址分文件夹
    # # print(type(address))
    # province = address[0:6]
    # print(province)

    if plate_market == '上交所':
        plate = 'sh'
        colum = 'sse'
    else:
        if str(plate_market)[0:3] == '深交所':
            plate = 'sz'
            colum = 'szse'
        else:
            if plate_market == '北交所':
                plate = 'bj;third'
                colum = 'bj'
            else:
                print(str(code)+'的所属市场非上非深非北,是:'+str(plate_market))
    # print(plate, colum)
    # plate_response.close()
    return plate, colum, compy_short, listing_date



# 3.定义get_pdf_url_dict项目字典的函数,
def get_pdf_url_dict(code, org_id, plate, colum):
    pdf_url_dict = {}
    page = 1

    while True:
        fild_list_data = {
            'stock': '{},{}'.format(code, org_id),  # code.org_id
            'tabName': 'fulltext',
            'pageSize': &
### 获取巨潮资讯网基金年报数据 为了实现从巨潮资讯网爬取所有基金年报数据的目标,可以借鉴已有的方法并做适当调整。具体过程涉及多个步骤,包括准备环境、构建请求URL、处理响应以及保存数据。 #### 准备工作 确保安装必要的库来支持HTTP请求和JSON解析等功能。通常情况下,`requests`用于发起网络请求,而`pandas`可以帮助管理最终收集到的信息表单。 ```bash pip install requests pandas ``` #### 构建查询接口 根据提供的参考资料[^3],访问巨潮资讯网的公告查询页面时可以通过指定参数如`stock`(股票代码),`searchkey`=年度报告等条件筛选所需记录。对于基金产品而言,则需关注其特有的编码规则或分类标签以便精确匹配目标文档集合。 #### 发送请求与接收返回值 使用`requests.get()`函数向服务器发送GET请求,并传递精心设计好的参数字典作为查询条件的一部分。注意设置合理的headers模拟浏览器行为以提高成功率。 ```python import json from urllib.parse import urlencode url = 'http://www.cninfo.com.cn/new/hisAnnouncement/query' params = { "pageNum": 1, "pageSize": 30, "column": "szse", "tabName": "fulltext", "plate": "", "stock": "", # 基金代码应填在此处 "searchkey": "年度报告", "secid": "", "category": "category_ndbg_szsh", "trade": "", "seDate": "2021-11-26~2024-11-25", "sortName": "code", "sortType": "asc", "isHLtitle": True } response = session.get(url=url,params=params).json() print(json.dumps(response['announcements'], ensure_ascii=False)) ``` 上述代码片段展示了如何构造一个针对特定时间段内发布的基金年报信息的API调用。需要注意的是实际应用中可能还需要考虑分页加载更多结果的情况。 #### 数据存储 一旦成功获取到了包含年报详情链接在内的结构化数据之后,就可以进一步编写逻辑去批量下载这些PDF文件至本地磁盘;同时也可以尝试利用第三方工具比如PyMuPDF来进行内容抽取操作,从而完成整个流程闭环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值