• python3爬取上市公司基本数据


    目前,我国沪深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()

      

  • 相关阅读:
    Solidworks如何设置零件材料,如何评估零件质量
    Office 如何双面打印Word文档
    Discuz常见小问题2-如何在新建的页面上只显示一部分板块
    Discuz常见小问题2-如何在数据库搜索指定关键字
    Discuz常见小问题2-如何修改整个网站的默认字体为微软雅黑
    Discuz常见小问题2-如何修改管理员密码,修改admin账户密码
    php使用include报错require_once(../include.php): failed to open stream: No such file or directo
    PHP中的__get()和__set()方法获取设置私有属性
    php->是什么意思
    PHP中require(),include(),require_once()和include_once()有什么区别
  • 原文地址:https://www.cnblogs.com/wongjoe/p/9116221.html
Copyright © 2020-2023  润新知