水均淼 2025-07-29 20:45 采纳率: 16.7%
浏览 16

深交所信息披露IPO和项目动态IPO爬取

  • 写回答

7条回答 默认 最新

  • 檀越@新空间 2025-07-29 20:48
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你提到的深圳证券交易所(深交所)的 IPO申报稿、上会稿、注册稿 等信息,是上市公司在上市过程中需要披露的重要文件。这些信息通常在 深交所官网 的以下两个页面中展示:

    • IPO申报稿/上会稿/注册稿https://listing.szse.cn/disclosure/ipo/index.html
    • 项目动态IPO详情页https://listing.szse.cn/projectdynamic/ipo/detail/index.html?id=...

    一、问题分析

    1. 链接之间的关系

    • IPO申报稿 是公司提交给监管机构的初步材料;
    • 上会稿 是经过审核后准备上发审委会议的材料;
    • 注册稿 是最终通过审核并完成注册的文件。

    它们之间有时间顺序逻辑关联,但没有直接的URL链接可以一键跳转。通常需要通过列表页面获取ID,再根据ID访问详情页来查看具体文件。

    2. 爬取难点

    • 深交所网站使用了反爬机制(如验证码、请求频率限制等);
    • 部分页面使用JavaScript动态加载内容,无法直接通过静态HTML抓取;
    • 文件可能以PDF形式存在,需提取PDF链接或下载PDF。

    二、解决方案(步骤详解)

    ✅ 步骤 1:分析目标网页结构

    1.1 IPO申报稿页面

    网址:https://listing.szse.cn/disclosure/ipo/index.html

    • 使用浏览器开发者工具(F12)查看页面元素,找到申报稿列表的结构。
    • 通常包含字段:公司名称、申报日期、状态(如“已受理”、“已反馈”等)、ID(用于访问详情页)。

    1.2 项目动态IPO详情页

    网址:https://listing.szse.cn/projectdynamic/ipo/detail/index.html?id=...

    • 需要从申报稿页面获取ID,然后构造URL访问详情页。
    • 详情页中可能会包含PDF文件链接,例如:
      <a href="/projectdynamic/ipo/download?fileId=123456">下载PDF</a>
      

    ✅ 步骤 2:确定数据来源与接口(可选)

    如果网页是通过 AJAX 请求加载数据,你可以尝试通过浏览器开发者工具的 Network 面板查找 API 接口,例如:

    GET https://listing.szse.cn/api/ipo/list?page=1&size=10
    
    • 该接口可能返回 JSON 格式的数据,包含所有 IOP 项目的 ID、名称、状态等信息。

    ✅ 步骤 3:编写 Python 爬虫代码(示例)

    下面是一个基本的 Python + requests + BeautifulSoup 示例代码,用于爬取 IPO 申报稿列表,并提取其中的 ID 和 PDF 下载链接。

    ⚠️ 注意:此代码仅用于学习目的,请遵守网站的 robots.txt 和相关法律法规。

    import requests
    from bs4 import BeautifulSoup
    import time
    
    # 设置请求头,模拟浏览器访问
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    }
    
    def get_ipo_list():
        url = 'https://listing.szse.cn/disclosure/ipo/index.html'
        response = requests.get(url, headers=headers)
        soup = BeautifulSoup(response.text, 'lxml')
    
        # 假设申报稿列表在 <table class="table"> 中
        table = soup.find('table', {'class': 'table'})
        rows = table.find_all('tr')[1:]  # 跳过表头
    
        for row in rows:
            tds = row.find_all('td')
            company_name = tds[0].text.strip()
            status = tds[1].text.strip()
            id_link = tds[2].find('a')['href']  # 获取详情页链接
    
            # 提取ID
            detail_id = id_link.split('id=')[1].split('&')[0]
            print(f"公司名称: {company_name}, 状态: {status}, ID: {detail_id}")
    
            # 访问详情页
            detail_url = f'https://listing.szse.cn/projectdynamic/ipo/detail/index.html?id={detail_id}'
            detail_response = requests.get(detail_url, headers=headers)
            detail_soup = BeautifulSoup(detail_response.text, 'lxml')
    
            # 查找PDF链接
            pdf_link = detail_soup.find('a', {'class': 'download-btn'})['href']
            print(f"PDF下载链接: https://listing.szse.cn{pdf_link}\n")
    
            time.sleep(1)  # 避免频繁请求被封IP
    
    if __name__ == '__main__':
        get_ipo_list()
    

    ✅ 步骤 4:处理反爬机制

    4.1 使用代理 IP

    如果被封 IP,可以使用代理服务(如 快代理、芝麻代理):

    proxies = {
        'http': 'http://10.10.1.10:3128',
        'https': 'http://10.10.1.10:1080',
    }
    response = requests.get(url, headers=headers, proxies=proxies)
    

    4.2 设置请求间隔

    time.sleep(2)  # 每次请求间隔2秒
    

    4.3 处理 JavaScript 渲染

    如果页面内容由 JS 动态加载,可以考虑使用 SeleniumPlaywright

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("https://listing.szse.cn/disclosure/ipo/index.html")
    # 等待JS渲染完成
    time.sleep(5)
    # 提取内容...
    

    ✅ 步骤 5:保存数据(可选)

    你可以将爬取的数据保存为 CSV 或 Excel 文件:

    import pandas as pd
    
    data = []
    for row in rows:
        # ...提取数据...
        data.append([company_name, status, detail_id, pdf_link])
    
    df = pd.DataFrame(data, columns=['公司名称', '状态', 'ID', 'PDF链接'])
    df.to_csv('ipo_data.csv', index=False, encoding='utf-8-sig')
    

    三、注意事项

    • 遵守法律和网站规则:请确保你的行为符合《中华人民共和国网络安全法》及网站的《用户协议》。
    • 避免高频请求:不要短时间内大量请求,以免被封IP。
    • 建议使用合法方式获取数据:如需大规模数据,可联系深交所官方获取授权接口。

    四、总结

    | 步骤 | 内容 | |------|------| | 1 | 分析目标网页结构 | | 2 | 确定数据来源与接口 | | 3 | 编写 Python 爬虫代码 | | 4 | 处理反爬机制(代理、延迟等) | | 5 | 保存数据 |


    如果你希望我帮你进一步优化代码,或者针对某个特定页面进行解析,请提供更具体的网页源码或截图,我可以帮助你定制化代码。

    如有其他问题,欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 修改了问题 7月29日
  • 创建了问题 7月29日