1. 程式人生 > >python3爬取上市公司基本數據

python3爬取上市公司基本數據

http fin form lis 爬蟲 sts 獲取網頁 bs4 ise

目前,我國滬深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()

  

python3爬取上市公司基本數據