赚钱养甜甜月

爬取所有上市公司的信息并写入Excel(较为详细)

女友金融高材生的,经常需要各种乱七八糟公司的具体内容,那身为不懂金融男友的我能做些什么呢,当然是吃瓜(要被打死…),当然是满足女朋友的需求,所以就拿起来了python保护自己(爱女朋友),首先先找找合适爬的网站,经过千辛万苦终于找到了一个合适的网站,在这个数据库可以看到所有上市公司的内容,截图如下,话不多说开始干活 ? (先提示一下,网上有类似的用panda爬到的表格,但内容有很多格式错误)
网站截图
F12检查一下,发现网页为GET类型,感兴趣的小伙伴可以直接去get到网页所有信息,这个公司内容这块使用了<tbody></tbody>,使用正常的get得不到里面的内容,但看源码是可以看到的。
可以查看tbody的内容,但是get不到,无法爬取
然后怎么办呢,先翻页看看吧,发现了一个很重要的东西
查看Requests URL

URL并没有变化
发现url并没有变化,这种URL没有变化的很大可能使用了ajax(异步 JavaScript 和 XML)所以我们查看XHR,如下所示,
在这里插入图片描述
我们得到了一串神秘链接:http://s.askci.com/StockInfo/StockList/GetList
注意网页为POST类型,然后怎么办,当然是点进去,(手动滑稽)然后,我发现了宝藏

各个公司的json数据
发现只有三十个数据,那在哪控制翻页呢,往回看
在这里插入图片描述
我们拉到最底下可以看到这样一排小字:

pageNum: 1

为了显示他的小我故意放大了看 ???
注意json转为字典格式需要用到

json.loads()

json属于JavaScript,不懂的可以上网看看,也可以直接导入json库,用我上面的方法解析json数据。
那我想信看到这的小伙伴应该都有自己的思路了吧,我就直接上代码了

import requests
import  json
import xlwt
import time
import random
import socket
socket.setdefaulttimeout(20) 

book = xlwt.Workbook()
sheet = book.add_sheet('sheetname')
name=['序号','股票代码','股票名称','公司全称','注册地址','省府','城市名(区名)','主营业务收入','总业务收入','净利润','员工数量','上市日期','明星公司上市日期','建立日期','股票转让书','财务报告','行业分类','产品类别','主营业务','产品名称','电话','办公室地址','董事长','法人','公司行业ID','公司城市ID','省份']
for i in range(len(name)):   #自定义表头
    sheet.write(0,i,name[i])

url='http://s.askci.com/StockInfo/StockList/GetList'  #上市公司具体信息 得到json数据
for i in range(1,557):
    time.sleep(1+random.random())
    formdata ={'type':'index' ,
                'pageNum': i}
    r = requests.post(url,data=formdata)   #ajax 通过构建data解决翻页问题
    r.encoding='utf-8'
    data=json.loads(r.text).get('data')   #转换为字典数据  可自己选择保留的数据

    for k in range(30):
        b=list(data[k].values())
        for j in range(len(b)):
            sheet.write(b[0],j,b[j])  
            book.save('D:/1.xls')         #自定义位置
        print('已完成'+str(b[0])+'个')
    r.close()        #每一次都关闭requests请求 防止网页误判攻击行为

在这里插入图片描述
这是爬到的内容,有几列是没有用的,可以在程序上适当修改或者事后再手动删掉,女朋友终于不用在一个一个搜了,真开心!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值