首页 文章详情

上交所深交所pdf批量下载实战

大邓和他的Python | 916 2021-05-29 16:55 0 0 0
UniSMS (合一短信)

bo一、知识准备

  1. python语法基本知识 https://www.bilibili.com/video/BV1eb411h7sP/
  2. python网络爬虫 https://www.bilibili.com/video/BV1AE411r7ph/

B站视频 https://www.bilibili.com/video/BV1AE411r7ph?p=10


二、网址规律分析

2.1 上交所


上交所多为GET请求方法,伪码

import requests

url = '上交所网址规律'
headers = '你的浏览器useragent(带referer)'
cookies = '你的cookies'
resp = requests.get(url, 
                    headers=headers, 
                    cookies=cookies)

2.2 深交所

深交所多为POST请求方法,伪码

import requests

url = '深交所网址规律'
headers = '你的浏览器useragent(带referer)'
cookies = '你的cookies'
param = 'form data构造的字典,补全网址规律'

resp = requests.get(url, 
                    headers=headers,
                    cookies=cookies, 
                    data=param)



三、定位pdf相关数据

访问得到的结果均为json数据,解析定位方法可使用python的字典方法。



四、存储数据

几千个pdf数据量很容易达到1000+M,如果长时间自动下载容易失败。

建议先获取所有公司相关信息,存储到csv中。

后续再单独使用pandas读取,逐一下载pdf。

注意,这里推荐使用csv新的语法

with open('你的csv文件路径''w', encoding='utf-8', newline=''as csvf:
    #csv文件内的字段名
    fieldnames = ['title''date''link''content']
    writer = csv.DictWriter(csvf, fieldnames=fieldnames)
    writer.writeheader()
    #访问
    url = '网址'
    resp = requests.get(url,....)
    #定位
    for company in resp.json()['data']:
        #解析数据
        row = dict()
        row['title'] = '采集到的标题'
        row['date'] = '采集到的日期'
        row['link'] = '采集到的pdf链接'
        row['content'] = '采集到的内容'
        
        #写入csv
        writer.writerow(row)



五、批量下载pdf

以深交所为例,已经采集到深圳交易所.csv,现在下载只需要执行

## 下载
import requests
import pandas as pd

def download(link, fpath):
    """
    下载多媒体及文件
    link: 多媒体文件链接(结尾有文件格式名)
    fpath: 存储文件的路径(结尾有文件格式名)
    "
""
    
    resp = requests.get(link)
    #获取到二进制数据
    binarydata = resp.content
    #以二进制形式将数据流存入fname中
    with open(fpath, 'wb') as f:
        f.write(binarydata)
        
df = pd.read_csv('深圳交易所.csv')
for title, link in zip(df['title'], df['link']):
    fpath = '深圳/{title}.PDF'.format(title=title)
    download(link, fpath)



六、完整代码

本教程视频地址 https://www.bilibili.com/video/BV1AE411r7ph?p=10

代码下载 ,由于百度网盘经常出现资源失效,所以同时在网盘和github中进行备份。

  • 百度网盘链接:https://pan.baidu.com/s/1dF4QtJ1f20apcCWTPPhyPg  密码:ik49
  • github项目中查找日期 20210525的文件  https://github.com/hidadeng/DaDengAndHisPython
  • 博客 https://hidadeng.github.io/post/intro/stockpdfdownload/

精选文章

系列视频|Python网络爬虫与文本数据分析
语法最简单的微博通用爬虫weibo_crawler
hiResearch 定义自己的科研首页
大邓github汇总, 觉得有用记得star
multistop ~ 多语言停用词库
Jaal 库 轻松绘制动态社交网络关系图
addressparser中文地址提取工具
来自kaggle最佳数据分析实践
B站视频 | Python自动化办公
SciencePlots | 科研样式绘图库
使用streamlit上线中文文本分析网站
bsite库 | 采集B站视频信息、评论数据
texthero包 | 支持dataframe的文本分析包
爬虫实战 | 采集&可视化知乎问题的回答
reticulate包 | 在Rmarkdown中调用Python代码
plydata库 | 数据操作管道操作符>>
plotnine: Python版的ggplot2作图库
读完本文你就了解什么是文本分析
文本分析在经管领域中的应用概述  
综述:文本分析在市场营销研究中的应用
plotnine: Python版的ggplot2作图库
Wow~70G上市公司定期报告数据集
漂亮~pandas可以无缝衔接Bokeh  
YelpDaset: 酒店管理类数据集10+G  

    分享”和“在看”是更好的支持

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter