批量获取绿色债券招募说明书

本文介绍如何使用Python模拟登录上海证券交易所并批量下载绿色债券招募说明书的PDF文件,详细阐述了从导入库、模拟登录、获取单页说明书链接、循环获取所有链接、导出链接到下载全量PDF的全过程。
摘要由CSDN通过智能技术生成

有个朋友想下载上海证券交易所的绿色债券招募说明书,如果一个一个手动下载,需要比较多的时间。跟我探讨是否可以用爬虫实现,研究了一段时间后,终于实现啦。本文提供批量爬取上海证券交易所绿色债券招募说明书的方法和全量代码。

  

一、导入库

  
首先导入爬虫需要的库,代码如下:

import os
import json
import time
import random
import pandas as pd
from captcha import * 
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import wait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
#导入库

  
  

二、模拟登录上海证券交易所

  
然后模拟登录上海证券交易所的网址,定位到绿色债券招募说明书模块,代码如下:

browser = webdriver.Chrome(ChromeDriverManager().install())
browser.maximize_window()
login_url = 'http://www.sse.com.cn/home/search/index.shtml?webswd=%E7%BB%BF%E8%89%B2%E5%80%BA%E5%88%B8%E6%8B%9B%E5%8B%9F%E8%AF%B4%E6%98%8E%E4%B9%A6'
browser.get(login_url)
time.sleep(random.uniform(3, 5))
browser.implicitly_wait(20)

得到结果:
  
在这里插入图片描述

  
  

三、定义获取单页所有绿色债券说明书的函数

  
接着定义获取当前页面所有绿色债券招募说明书pdf的函数,代码如下:

pdf_links = []
names = []
#获取当页所有的网址信息
def page_pdf_link():
    for i in range(1, 11):
        text = "/html/body/div[8]/div/div[2]/div[1]/div[1]/div[4]/ul/li[" + str(i) + "]/div[1]/a[@href]"
        elems = browser.find_elements_by_xpath(text)
        for elem in elems:
            pdf_link = elem.get_attribute("href")
            name = elem.get_attribute("text")
            print(pdf_link)
        names.append(name)
        pdf_links.append(pdf_link)

其中names变量中存放绿色债券招募说明书的名称,pdf_links中存放绿色债券招募说明书对应pdf下载链接。

  
  

四、写循环获取所有绿色债券说明书链接

  
写循环,获取所有的绿色债券说明书pdf文档链接,代码如下:

for i in range(1, 500):
    try:
        page_pdf_link()
        #获取当前页面全量网址
        browser.find_element_by_xpath('//*[@id="tab-main0"]/div[1]/div[4]/div/ul/li[9]/a').click()
        #点击下一页
        time.sleep(random.uniform(2, 4))
    except:
        pass
page_pdf_link():获取单页所有绿色债券说明书的名称和下载链接函数。

然后点击下一页,循环获取所有页面中的pdf链接。得到结果:

在这里插入图片描述

  
  

五、获取招募书的数量并导出招募书链接

  

接着获取招募说明书的数量,代码如下:

len(pdf_links)

得到结果:

5030

说明总计有5030个绿色债券说明书pdf文件。然后导出绿色债券说明书pdf文件链接和对应名称,代码如下:

import pandas as pd 
import os  
​
os.chdir('F:\公众号\89_爬上海证券交易所')
date = pd.DataFrame(names, pdf_links)
date.to_csv('links.csv', encoding='gbk')

得到结果:

在这里插入图片描述

  
  

六、根据招募说明书链接下载全量pdf文件

  
最后根据绿色债券招募说明书的链接下载全量pdf,并根据招募说明书名称保存成对应的pdf文件,代码如下:

import io  
import requests  
​
os.chdir(r'F:\公众号\89_爬上海证券交易所\pdf')
for i in range(1, 5031):
    # 发送GET请求  
    response = requests.get(pdf_links[i])    
    # 将响应内容读入到内存中  
    pdf_content = io.BytesIO(response.content)  
    # 将PDF文件内容写入到本地文件中  
    with open(names[i] + '.pdf', 'wb') as file:  
        file.write(pdf_content.read())

得到结果:

在这里插入图片描述

至此,批量爬取上海证券交易所绿色债券招募说明书已讲解完毕,需要的朋友可以自己跟着代码尝试一遍。
  
【部分群限时免费进】 分群讨论学习Python、玩转Python、风控建模【29.9元进】、人工智能、数据分析相关问题,还提供招聘内推信息、优秀文章、学习视频、公众号文章答疑,也可交流工作中遇到的难题。如需添加微信号19967879837,加时备注想进的群,比如风控建模。
  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)
一文囊括风控模型搭建(原理+Python实现),持续更新。。。

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿黎逸阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值