bo一、知识准备
python语法基本知识 https://www.bilibili.com/video/BV1eb411h7sP/ 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/
