python 爬取A股上市公司2022年报
时间: 2023-10-07 07:14:52 浏览: 231
要爬取A股上市公司的2022年报,需要先找到能够获取这些报告的数据源。一种比较常见的方式是从上交所和深交所的官方网站获取这些报告。
以下是爬取的大致步骤:
1. 确定要爬取的公司列表,可以从上交所和深交所的官方网站获取。
2. 构建爬取链接,链接的格式为:http://www.sse.com.cn/disclosure/listedinfo/announcement/index_1.htm 或 http://disclosure.szse.cn/m/search0425.jsp。
3. 解析页面内容,获取年报的下载链接。
4. 下载年报并保存到本地。
下面是一个简单的示例代码,供参考:
```python
import requests
from bs4 import BeautifulSoup
# 构建爬取链接
sse_url = 'http://www.sse.com.cn/disclosure/listedinfo/announcement/index_1.htm'
szse_url = 'http://disclosure.szse.cn/m/search0425.jsp'
# 爬取上交所的公司年报
sse_resp = requests.get(sse_url)
sse_soup = BeautifulSoup(sse_resp.text, 'html.parser')
sse_table = sse_soup.find('div', {'class': 'sse_list_1'}).find_all('li')
for row in sse_table:
if '年报' in row.text:
report_url = row.find('a')['href']
# 下载年报并保存到本地
report_resp = requests.get(report_url)
with open('report.pdf', 'wb') as f:
f.write(report_resp.content)
# 爬取深交所的公司年报
szse_resp = requests.post(szse_url, data={'searchWZ': '年报', 'sort': 'time', 'pageSize': '30', 'pageNum': '1'})
szse_soup = BeautifulSoup(szse_resp.text, 'html.parser')
szse_table = szse_soup.find('table', {'class': 'cls-data-table'}).find_all('tr')
for row in szse_table:
if '年报' in row.text:
report_url = 'http://disclosure.szse.cn' + row.find_all('td')[1].find('a')['href']
# 下载年报并保存到本地
report_resp = requests.get(report_url)
with open('report.pdf', 'wb') as f:
f.write(report_resp.content)
```
需要注意的是,这只是一个简单的示例代码,实际爬取的时候还需要处理一些细节,比如反爬虫机制、异常处理等。
阅读全文