爬巨潮網(wǎng)上市公司年報(bào)

從巨潮網(wǎng)按公告時(shí)間批量下載上市公司年報(bào)

import socket
import time
import csv
import requests
import datetime
from dateutil.relativedelta import relativedelta

socket.setdefaulttimeout(20)#這里對整個(gè)socket層設(shè)置超時(shí)時(shí)間。后續(xù)文件中如果再使用到socket,不必再設(shè)置  

#下載pdf公告的函數(shù)
def downloadpdf(url, file):
    resp = requests.get(url)
    f = open(file, 'wb')
    f.write(resp.content)
    f.close()
    
#新建csv文件,存儲(chǔ)公告詳細(xì)信息
csvf = open('年報(bào).csv','a+', encoding='gbk', newline='')
writer = csv.writer(csvf)
writer.writerow(('公司簡稱','股票代碼', '發(fā)布時(shí)間', '公告標(biāo)題', '公告pdf下載地址'))

#新建txt文件,存儲(chǔ)有問題的網(wǎng)址
csvf2 = open('年報(bào)pdf\\未下載的網(wǎng)址.csv','a+', encoding='gbk', newline='')
writer2 = csv.writer(csvf2)
writer2.writerow(('時(shí)間','網(wǎng)址'))

//以下從網(wǎng)站上看參數(shù),
headers = {'User-Agent':' '}
cookies = {'Cookie': ' '}
url = ' '

//巨潮網(wǎng)貌似有一個(gè)bug,100頁之后無法翻頁,所以把爬取時(shí)間單位設(shè)置為月,以免漏掉公告。
bg = datetime.datetime.strptime('20190201', '%Y%m%d')
while bg>datetime.datetime.strptime('20181201', '%Y%m%d'):
    end = bg+relativedelta(months=1)
    bgstr = bg.strftime('%Y-%m-%d')
    endstr = end.strftime('%Y-%m-%d')
    daterange = bgstr+'~'+endstr

    for page in range(101): 
        try:
            data = {''}//網(wǎng)站上查參數(shù)          
            #發(fā)起請求,采集
            sleep_download_time =10
            time.sleep(sleep_download_time)
            resp = requests.post(url, params=data, headers=headers, cookies=cookies)
            pdfs = resp.json()['announcements']
            resp.close()
            for pdf in pdfs:
                announcementTitle = pdf['announcementTitle']
                if announcementTitle.find(u"摘要") ==-1:
                    secName = pdf['secName']
                    secCode =pdf['secCode']
                    adjunctUrl = 'http://static.cninfo.com.cn/'+pdf['adjunctUrl']
                    pdffile = '\\年報(bào)pdf\\'+'sec'+str(pdf['secCode'])+'_'+announcementTitle+'.pdf'
                    downloadpdf(url=adjunctUrl, file=pdffile)
                    print('sec'+str(pdf['secCode'])+'_'+announcementTitle+'.pdf已下載完成')
                    #announcementTypeName = pdf['announcementTypeName']
                    announcementTime = pdf['announcementTime']
                    #print(secName, secCode, announcementTime, announcementTitle, adjunctUrl, announcementTypeName)
                    writer.writerow((secName, secCode, announcementTime, announcementTitle, adjunctUrl))
        except:
            print('出問題的網(wǎng)址', resp.url)
            writer2.writerow((data['seDate'],resp.url))
    bg=bg-relativedelta(months=1)                              
    print(data['seDate']+'已下載完成')
csvf.close()
csvf2.close()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ——財(cái)經(jīng)文章 “去哪里可以下載上市公司年報(bào)?” “如何批量下載上市公司年報(bào)?” “如何下載全部上市公司財(cái)務(wù)報(bào)表Ex...
    財(cái)報(bào)磚家閱讀 5,037評論 0 2
  • 一、年報(bào)的獲取 所有上市公司年報(bào)季報(bào)等都可以在其上市交易所網(wǎng)站能下載 上一年的年報(bào)可以在次年4月30日之后找到,對...
    klwei閱讀 959評論 0 3
  • 公司名稱:利歐集團(tuán)股份有限公司 讀后感言: 這周是A6學(xué)習(xí)的倒數(shù)第三周了,也是看招股說明書以來的第24周了。我還是...
    淡藍(lán)色的天蝎閱讀 1,187評論 0 1
  • 從小到大,你被你媽坑過多少回呢?你不愛吃飯?zhí)羰车臅r(shí)候,她夾著菜說,:“這菜炒的真不錯(cuò),要不要來嘗一嘗呦?”戲謔的眼...
    蘇農(nóng)閱讀 325評論 0 0
  • 凌晨,周圍一片靜寂??諝庵袕浡鴱谋桓C散發(fā)出來的溫暖,很多人還在良辰美夢中,我們甚至能夠聽到均勻的呼吸聲。...
    火玫瑰姐姐閱讀 193評論 0 1

友情鏈接更多精彩內(nèi)容