一些上市公司或者新三板公司会披露下一年度的关联交易预计。
如果预计关联交易金额大幅提升,且关联客户占公司营收和利润比例较高,那说明公司下一年度业绩有望大幅增加。
当然,这也只是一个粗略估计,实际发生金额未必就如企业预期。
比如苏奥传感,2022年预计关联交易发生金额1600万,实际发生1084万。所以,这个只能作为一个线索,切不可作为拐点发生的证据。
新三板上有几千家公司,2023年关联交易预计的公告有几百份,如果能够全部下载然后整理到一个表格中,进行排序,就可以一目了然的知道哪些企业的关联交易预计会大幅增长了。 借助ChatGPT,可以轻松实现这个功能。
首先,打开挂牌公司公告,网址是:www.neeq.com.cn/disclosure/…
输入:2023年日常性关联交易,然后点击查询,
可以看到requestURL是:www.neeq.com.cn/disclosureI…
Content-Type是:application/x-www-form-urlencoded; charset=UTF-8
说明这个页面的数据都是动态生成的,用常规静态页面的方法是无法获取到的。
点击response,可以看到动态生成的内容,是json格式
点击payload,可以看到这些动态参数是通过form data方式传递给网站服务器的
要获取这个网站内容,要告诉chatgpt网站的Request URL、Request headers、formdata 这些信息,然后发送post请求来获取网址数据,可以在ChatGPT里面输入提示词如下:
一个动态网页,其相关信息如下:
Request URL:
Request headers
Accept:
text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, /; q=0.01
Accept-Encoding:
gzip, deflate, br
Accept-Language:
zh-CN,zh;q=0.9,en;q=0.8
Connection:
keep-alive
Content-Length:
538
Content-Type:
application/x-www-form-urlencoded; charset=UTF-8
Host:
Origin:
Referer:
Sec-Ch-Ua:
"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"
Sec-Ch-Ua-Mobile:
?0
Sec-Ch-Ua-Platform:
"Windows"
Sec-Fetch-Dest:
empty
Sec-Fetch-Mode:
cors
Sec-Fetch-Site:
same-origin
User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
X-Requested-With:
XMLHttpRequest
formdata = 'noticeType%5B%5D=5&disclosureType%5B%5D=5&disclosureSubtype%5B%5D=&page=&companyCd=&isNewThree=1&keyword=2023+%E5%B9%B4%E6%97%A5%E5%B8%B8%E6%80%A7%E5%85%B3%E8%81%94%E4%BA%A4%E6%98%93&xxfcbj%5B%5D=3&hyType%5B%5D=&needFields%5B%5D=companyCd&needFields%5B%5D=companyName&needFields%5B%5D=disclosureTitle&needFields%5B%5D=disclosurePostTitle&needFields%5B%5D=destFilePath&needFields%5B%5D=publishDate&needFields%5B%5D=xxfcbj&needFields%5B%5D=destFilePath&needFields%5B%5D=fileExt&needFields%5B%5D=xxzrlx&siteId=1&sortfield=xxssdq&sorttype=asc'
写一段Python代码,发送POST请求,获取这个网页的数据
程序运行后,返回这样的字符串,其中有一段json数据,股票公告下载的地址就在json数据中。
要用程序批量下载PDF,需要首先要去掉开头和结尾的字符串,得到其中的json数据,然后从json数据中提取destFilePath(PDF文件下载地址)和disclosureTitle(PDF文件标题)内容,然后让程序自动下载就好了。
经过多次尝试,构建ChatGPT的提示词如下:
从一个动态网页获取了网页数据response.text,
去掉开头的字符串:jQuery331_1685491901352([{"listInfo":{"content":[,去掉结尾的字符串:,"firstPage":true,"lastPage":false,"number":0,"numberOfElements":20,"size":20,"sort":null,"totalElements":796,"totalPages":40},"status":0}]) ,只保留中间的json内容;
然后从json文件中提取出所有的destFilePath和disclosureTitle内容;
在所有的destFilePath内容前加上 www.neeq.com.cn,构建出一个PDF文件下载地址,以disclosureTitle作为PDF文件标题名,注意:要用正则表达式将文件名中[]、:这样的特殊符号替换为下划线;
下载所有PDF文件,保存到电脑d盘“关联交易”文件夹
注意:需要在代码中添加应对反爬虫的一些措施,比如添加请求头、延迟请求等
然后,再通过response_text = response.text 把两段代码连接起来。就构成一个完整的下载程序。
运行程序,成功下载所有PDF文件。
接下来,要把这些公告文件里面的表格数据提取出来。打开这些公告,所有关联交易的数据在PDF文件的第一页。
打开ChatGPT(一定要用GPT4,编程能力很强。相比之下,gpt3.5弱太多了),输入提示词如下:
d盘有一个文件夹:guanlianjiaoyi,里面有很多pdf文件;你的任务是写一个Python程序,批量提取PDF文件中表格信息到excel文件,具体步骤:
1、打开一个PDF文件;
2、用pdfplumber提取第一页的表格信息;
3、以原有的PDF文件名作为excel表格文件标题,保存刚才提取的表格信息到excel文件,放到电脑d盘文件夹excel中
然后在命令行提示符里面安装pdfplumber:pip install pdfplumber
pdfplumber是一个Python库,用来读取和写入PDF文件。ChatGPT一会就生成了代码,复制到Visual Studio Code中,运行,很快就完成了。
打开其中的excel表检查看看,内容提取正确。
最后,要把所有这些表格里面的内容全部合并到一张表格里面。
在ChatGPT中选中GPT4,输入如下提示词:
d盘有一个文件夹:excel,里面有很多excel文件;你的任务是写一个Python程序,批量合并excel表格中的内容到一个新的excel表格中,下面是一步步的操作:
1、在d盘newexcel文件夹里面新建一个excel表格,表格标题为:newexcel
2、打开d盘excel文件中第1个excel文件;
获取excel文件名,写入newexcel表格中的A2单元格;
获取excel文件中的C2单元格内容, 写入newexcel表格中的B2单元格,表头”为预计2023年购买原材料发生金额”;
获取excel文件中的D2单元格内容, 写入newexcel表格中的C2单元格,表头”2022年实际发生金额”;
获取excel文件中的C3单元格内容, 写入newexcel表格中的D2单元格,表头”2023出售产品”;
获取excel文件中的D3单元格内容, 写入newexcel表格中的E2单元格,表头”2022出售产品”;
获取excel文件中的C4单元格内容, 写入newexcel表格中的F2单元格,表头”2023委托关联人销售”;
获取excel文件中的D4单元格内容, 写入newexcel表格中的G2单元格,表头”2022委托关联人销售”;
获取excel文件中的C5单元格内容, 写入newexcel表格中的H2单元格,表头”2023接受委托关联人销售”;
获取excel文件中的D5单元格内容, 写入newexcel表格中的I2单元格,表头”2022接受委托关联人销售”;
3、打开d盘excel文件中第2个excel文件;
获取excel文件名,写入newexcel表格中的A3单元格;
获取excel文件中的C2单元格内容, 写入newexcel表格中的B3单元格;
获取excel文件中的D2单元格内容, 写入newexcel表格中的C3单元格;
获取excel文件中的C3单元格内容, 写入newexcel表格中的D3单元格;
获取excel文件中的D3单元格内容, 写入newexcel表格中的E3单元格;
获取excel文件中的C4单元格内容, 写入newexcel表格中的F3单元格;
获取excel文件中的D4单元格内容, 写入newexcel表格中的G3单元格;
获取excel文件中的C5单元格内容, 写入newexcel表格中的H3单元格;
获取excel文件中的D5单元格内容, 写入newexcel表格中的I3单元格;
4、重复以上步骤,直到所有excel文件内容都已经提取到newexcel表格中
注意:每个步骤都要输出信息
运行后出错,把出错信息复制,然后发给ChatGPT
ChatGPT很快发现了问题所在:我使用了openpyxl库中的column_index_from_string函数来将列字母转换为列索引(整数)这将解决之前的类型错误问题。请再次尝试运行此脚本。。
修复后,程序运行成功,很快所有数据都提取到excel表格中了。
接下来就可以在表格中进行关联交易的数据分析了。
那些相比于上年关联交易金额大幅上升的,就非常值得关注。