python爬取深交所各行业前三上市公司市值

嘿,周末ccpc网络预选赛,我就不复习,我就大晚上不睡觉刷手机,嘿你能怎么着。(在被队友打死前跑路)

实际上是刚刚写嗨了,肾上腺激素飙升,但是俺滴任务完成啦,想着刷会手机再睡,结果不小心把锁机点开了,导致我只能打开csdn,顺带更新一下今天罚坐十一小时(包含吃饭,拿快递,刷视频等等的时间)的结果。

督促我学爬虫的,不是热爱,不是机器人,而是专业课作业,是我实在不想一个个点开网页,点开,查找,比较数值。

话说回来,贵院真有你的,还开数据挖掘,还学爬虫,虽然第一节课是海龟博士手把手教如何安装python和pycharm。(顺带一提,老师高度赞许了csdn(否,原话是国内网站不熟悉,然后推荐了csdn))

哦不过和上述这门课没啥关系,只是小吐槽一下。简单描述一下作业:统计深交所各个行业的一些信息,并且统计每个行业市值前三的公司。

首先肯定要知道有什么行业,并且每个行业都有什么公司。深交所贴心的提供了各行业上市公司的信息,甚至还提供的下载。

不巧的是刚好市值得点进网页查看。那没办法,只能一个个查,然后比较、统计。

桥豆麻袋,这显然不符合本人尿性,最起码写个sort数组排个序啊。但这也太逊了吧阿伟,刚好最近发奋图强在了解爬虫,这不是个现成的例子吗?

(由于我已经在床上了,网页也打不开,我只能凭记忆回忆一下,代码后面补,专业名词说错了多多包涵,我真不看股票的,并且小半年不用python了,具体实现可能会略微复杂)

首先观察网址,后面这一串数字一看,好家伙,这不上司公司的id吗,这波不直接在行业分类里把所有的公司id都爬下来,然后一个个去查找?

但鉴于我刚学,懒,且不会。所以我选择直接下载了深交所提供的Excel文件,从里面提取。

我们这时候提取出了公司名字和id,遍历id并把它与网址融合,然后发现网站结构差不多,这波直接找到需要的元素,爬下来就行啦。(由于py只学了个皮毛,所以不太会,写的可能麻烦了,没事能用就行)


workbook = load_workbook(filename='d:/Users/asinz/Downloads/A股列表 (22).xlsx')
sheet2 = workbook.active
cells1 = sheet2["E"]

k=[]
for cell_columns in cells1:
    k.append(cell_columns.value)
k.remove(k[0])

cells2 = sheet2["F"]

q=[]
for cell_columns in cells2:
    q.append(cell_columns.value)

dic={}
for i in k:
    dic[i]=f(i)
print(dic)

然后有笨蛋对着html找数据所在的位置找了一个晚上,最后把下载下来的html和爬出来的html做对比,发现信息消失了!

好吧我以为的爬虫的html是元素里的,实际上是index。那这波咋整?

很明显好吧,这肯定是动态元素啊,当然是去网络里找啊。

如何快速查找再哪里呢,那当然是拿着数值去搜啊

 研究对应的结构,并爬下来进行筛选,存入

通过一个个查找我们找到了市值对应的key,把data爬下来,遍历到key的时候就输出,结束!

等等,我们是不是忘了还缺啥

哦对了,前三!

开个排序就好啦!

from tokenize import Double
from openpyxl import load_workbook
import requests
import locale
import time

def f(z):
    time.sleep(0.5)
     #1指定url
    post_url = 'http://www.szse.cn/api/report/index/stockKeyIndexGeneralization?random=0.9574288098451655&secCode={}'.format(z)
    print(post_url)
    #2进行ua伪装。浏览器请求头中
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.27'
    }
    #3post请求参数处理
    
    #4发送请求
    response=requests.get(url=post_url,headers=headers)
    #5获取响应数据,json()方法返回的是obj(如果确认响应数据是json类型的才可以用json返回
    dic_obj=response.json()
    
    for i in dic_obj:
        if i=='data':
            for j in dic_obj[i]:
                for k in j:
                    if k=='now_sjzz':
                        
                        j[k] = float(j[k].replace(',',''))

                        return float(j[k])
    #6进行持
    # 久化存储


workbook = load_workbook(filename='d:/Users/asinz/Downloads/A股列表 (22).xlsx')
sheet2 = workbook.active
cells1 = sheet2["E"]

k=[]
for cell_columns in cells1:
    k.append(cell_columns.value)
k.remove(k[0])

cells2 = sheet2["F"]

q=[]
for cell_columns in cells2:
    q.append(cell_columns.value)

dic={}
for i in k:
    dic[i]=f(i)
print(dic)
dic=sorted(dic.items(),key=lambda x:x[1],reverse=True)



for i in range(3):
    for j in range(len(k)):
        if k[j]==dic[i][0]:
            print(k[j],q[j+1],dic[i][1])

结束

刚好,平静了,该睡了。

---------------------9.13更新----------------

我发四,我肯定不是因为今天汇报/交作业才补的代码和图片,我只是今天才想起来没放图片(溜)

and笨蛋ccpc网络赛翻车了呜呜呜呜

顺带加了个sleep,因为ip地址被禁用了(qaq)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬取上市公司表通常是指获取公司的财务报表,包括资产负债表(Balance Sheet)、利润表(Income Statement)和现金流量表(Cash Flow Statement),这些都是公开的财务数据,通常可以从证券交易所网站或财经信息平台获取。下面简述一下如何使用Python进行这个过程: 1. **确定数据源**:首先,你需要知道官方网站的数据抓取规则以及API(如果有提供),常见的数据来源有SEC (美国证券交易委员会)、新浪财经、东方财富网等。 2. **使用库**:Python有许多用于网络爬虫的库,如`requests`用于发送HTTP请求,`BeautifulSoup`或`pandas`的`read_html`用于解析HTML页面并提取数据。对于动态加载内容,可能需要使用Selenium等工具配合。 3. **编写代码**: - 定义URLs: 获取每个上市公司报表的链接,例如年报、季报等。 - 发送请求: 使用`requests.get()`下载网页源码。 - 解析数据: 使用BeautifulSoup或其他库解析HTML,找到包含财务数据的部分,然后转化为DataFrame或字典形式。 - 存储数据: 将抓取到的数据保存到CSV、Excel或数据库中。 4. **处理异常**:注意处理可能出现的网络错误、反爬策略(如验证码、IP限制)等问题,可能需要设置代理服务器或定时爬取。 5. **法律法规**:在爬取数据之,务必了解目标网站的robots.txt文件和爬虫政策,确保你的行为符合法律规定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值