python3爬取上市公司基本数据

本文介绍了一种利用Python爬虫技术从巨潮资讯网批量获取沪深A股上市公司基本信息的方法。主要内容包括:所需公司基本信息的具体内容、数据来源的选择、以及具体的获取流程和技术实现手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前,我国沪深A股上市公司的数量为3524家[2018/05/31],如果能够从某个财经网站上批量获取这些公司的基本信息,将对研究工作起到一定帮助。进行这项工作之前,先让我们梳理一下我们的数据及其来源。

第一,我们需要哪些公司基本信息?

根据巨潮资讯网提供的数据,公司基本信息包含公司全称、英文名称、注册地址、公司简称、法定代表人、公司董秘、注册资本(万元)、行业种类、邮政编码、公司电话、公司传真、公司网址、上市时间、招股时间、发行数量(万股)、发行价格(元)、发行市盈率(倍)、发行方式、主承销商、上市推荐人和保荐机构,共21条信息。

我们的目标就是批量获取这21条或者其中我们需要的那些数据。

第二,数据来源是什么?

之前,试过从天眼查爬取数据,但是天眼查的反爬机制确实让人头疼。个人感觉巨潮资讯网的网站结构还是比较规范的,并且这个网站没有tyc-num之类的反爬,这样就给工作节省了一大笔时间。

数据来源就是巨潮资讯网。

第三,怎么实现获取?

我们的目标和来源都已经明确,接下来就是获取问题了。这也是功能的关键部分。首先,明确程序的功能特点,即输入股票代码(1个或者多个),批量获取这些公司基本信息。其次,输入的股票代码,可以是自己的目标公司,也可以是分行业、分概念、分地域等(演示代码中使用tushare调取了沪深全部A股上市公司)。再次,批量抓取公司基本信息,这里就涉及到python爬虫的部分。爬虫的部分,基本思路是用tushare获取股票代码,依次获取包含公司信息的网页链接,用requests获取网页源码,用bs4解析网页结构,从中找到所需信息,然后打印或者保存。

总结起来,这里用的了tushare,requests,bs4,等基本内容。演示代码中直接在窗口中打印信息,也可以尝试将信息保存在excel,csv等文件中。

接下来就是代码部分。代码中有不完善之处,感谢批评指正。

#-*-coding:gb2312-*-

from bs4 import BeautifulSoup
import requests
import bs4
import tushare as ts


#获取源码
def check_link(url):
    try:
        
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print('无法链接服务器!')


#解析并抓取
'''
print 部分,获取了9条信息,改变这部分参数,可以获取一共21条信息。
''' def get_contents(ulist,rurl): soup = BeautifulSoup(rurl,'lxml') trs = soup.find_all('tr') for tr in trs: ui = [] for td in tr: ui.append(td.string) ulist.append(ui) print(ulist[1][3],ulist[3][3],ulist[5][3],ulist[7][3],ulist[8][3],ulist[13][3],ulist[15][3],ulist[16][3],ulist[17][3])
#定义主函数 def main(): df = ts.get_stock_basics() for i in df.index: index_int = int(i) urli = [] url = "http://www.cninfo.com.cn/information/brief/shmb%d.html"%index_int try: rs = check_link(url) get_contents(urli,rs) continue except: pass main()

  

 

转载于:https://www.cnblogs.com/wongjoe/p/9116221.html

### 使用Python编写爬虫程序抓取上市公司财务报表数据 #### 工具和技术栈的选择 为了有效地抓取和处理上市公司财务报表中的复杂表格结构,可以采用多种技术和库组合的方式。常用的工具包括`requests`用于发起HTTP请求;`BeautifulSoup`或`lxml`负责HTML解析;当遇到JavaScript渲染的内容时,则可能需要用到`Selenium`模拟浏览器行为[^1]。 #### 数据源选择与分析 在确定要抓取的目标网站之前,需先了解其页面布局及API接口情况。例如某些财经门户虽然不允许直接下载PDF版财报文件,但却开放了在线查看模式下的JSON API调用权限,这为自动化的数据采集工作带来了便利条件[^2]。 #### 编写基础版本的爬虫脚本 下面是一个简单的例子,展示了如何构建一个基本框架来获取指定URL上的公开披露资料: ```python import requests from bs4 import BeautifulSoup import pandas as pd def fetch_financial_statement(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") tables = [] for table in soup.find_all('table'): df = pd.read_html(str(table))[0] tables.append(df) return tables ``` 此函数接收单个参数即目标网页链接,并返回由多个DataFrame对象组成的列表形式的结果集,每个元素代表原生文档内的某张具体表格内容[^3]。 #### 处理反爬机制 实际操作过程中可能会碰到诸如验证码验证、IP封禁等问题阻碍正常访问流程。针对这类情形可采取如下措施加以应对: - 设置合理的延时间隔; - 更换不同类型的代理服务器; - 修改请求头伪装成真实用户的浏览习惯等策略。 #### 存储所获信息至本地数据库 最后一步就是把收集到的信息保存下来供日后查询使用。这里推荐选用SQLite轻量级关系型数据库管理系统作为临时储存介质,在此基础上建立相应的表结构用来容纳各类明细项记录。 ```sql CREATE TABLE IF NOT EXISTS financial_statements ( id INTEGER PRIMARY KEY AUTOINCREMENT, company_name TEXT NOT NULL, report_type TEXT CHECK(report_type IN ('income', 'balance_sheet', 'cash_flow')), period_start DATE, period_end DATE, data JSONB ); ``` 上述SQL语句定义了一个名为financial_statements的新表,其中包含了字段company_name表示企业名称,report_type区分三大类目(损益表、资产负债表、现金流),period_start/end标记会计期间起始日期范围,data则采用了jsonb类型允许灵活存储多维度数值属性集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值