Python批量下載證監(jiān)會(huì)反饋意見(jiàn)

相信投行從業(yè)人員經(jīng)常要做的一件事幕随,是要下載證監(jiān)會(huì)的反饋意見(jiàn),把它們收集起來(lái)冯事,形成自己的數(shù)據(jù)庫(kù)焦匈。在這里,筆者運(yùn)用Python對(duì)網(wǎng)頁(yè)進(jìn)行爬蟲昵仅,可批量下載證監(jiān)會(huì)反饋意見(jiàn)缓熟,可大大減輕工作量。

image

本文目錄:

1岩饼、觀察網(wǎng)頁(yè)
2荚虚、 下載第一頁(yè)的反饋意見(jiàn)
3薛夜、通過(guò)循環(huán)籍茧,下載證監(jiān)會(huì)所有的反饋意見(jiàn)

1、觀察網(wǎng)頁(yè)

我們?cè)诠雀铻g覽器右鍵點(diǎn)擊“檢查”,點(diǎn)擊“Network”梯澜,刷新頁(yè)面寞冯。我們點(diǎn)擊第一條名為“scgkfxfkyj”的鏈接,點(diǎn)擊“Response”晚伙,發(fā)現(xiàn)了我們需要的反饋意見(jiàn)在這里可以找到吮龄,說(shuō)明我們只需要請(qǐng)求和解析靜態(tài)網(wǎng)頁(yè)即可。

image

2咆疗、 下載第一頁(yè)的反饋意見(jiàn)

(1)先調(diào)用本次要使用的第三方庫(kù)

import re
from lxml import etree
import requests

(2)采用requests庫(kù)請(qǐng)求數(shù)據(jù)

我們查看“Headers”發(fā)現(xiàn)請(qǐng)求方法為get請(qǐng)求漓帚,請(qǐng)求url和請(qǐng)求方法如下圖所示:

image

請(qǐng)求數(shù)據(jù)代碼如下:

url='http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/'
r=requests.get(url)
r.encoding=r.apparent_encoding

(3)采用Xpath解析數(shù)據(jù)

我們查看“Elements”,發(fā)現(xiàn)頁(yè)面所有的反饋意見(jiàn)都在class=”fl_list”的的div標(biāo)簽下午磁,每一個(gè)反饋意見(jiàn)則在該div標(biāo)簽下的li標(biāo)簽下尝抖,li標(biāo)簽下有網(wǎng)頁(yè)鏈接、名字和發(fā)布時(shí)間等數(shù)據(jù)迅皇。

image

獲取每個(gè)反饋意見(jiàn)所在網(wǎng)址后昧辽,我們發(fā)現(xiàn),我們下載文件的鏈接存在這個(gè)網(wǎng)址里登颓,經(jīng)過(guò)對(duì)這個(gè)網(wǎng)址進(jìn)行分析搅荞,我們發(fā)現(xiàn)網(wǎng)址由兩部分內(nèi)容拼接而成:

頭部:反饋意見(jiàn)所在網(wǎng)址的前半段;尾部:<a>標(biāo)簽的href屬性;

我們采用正則表達(dá)式將文件所在網(wǎng)址提取出來(lái)咕痛。

image

下載第一頁(yè)反饋意見(jiàn)代碼如下:

baseurl='http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/'
r=requests.get(baseurl)
r.encoding=r.apparent_encoding
tree=etree.HTML(r.text)
li_list=tree.xpath('/html/body/div/div/div[5]/div[2]/div[1]/div[2]/ul/li')#會(huì)把所有的li標(biāo)簽提取出來(lái)
for li in li_list:
    href=li.xpath('./a/@href')[0][2:]#獲取反饋意見(jiàn)所在網(wǎng)址的后綴
    url=baseurl+href#獲取反饋意見(jiàn)所在網(wǎng)址
    date=li.xpath('./span/text()')[0]#獲取反饋意見(jiàn)發(fā)布時(shí)間
    r=requests.get(url)#請(qǐng)求反饋意見(jiàn)網(wǎng)址數(shù)據(jù) 
    r.encoding=r.apparent_encoding
    url_href=re.findall('a href="./(.*?.docx?)"',r.text)[0]
    name=re.findall('h12>(.*?.docx?)</a>',r.text)[0]#獲取反饋意見(jiàn)文件名字
    name=date+name#給反饋意見(jiàn)文件名字加上發(fā)布時(shí)間
    url_head=re.findall('(.*)/.*?.html',url)[0]
    new_url=url_head+'/'+url_href#獲取反饋意見(jiàn)文件網(wǎng)址
    r=requests.get(new_url)
    with open('C:\\Users\\mi\\Desktop\\證監(jiān)會(huì)反饋意見(jiàn)\\首發(fā)反饋意見(jiàn)2\\'+name,'wb') as f:
        f.write(r.content)

3痢甘、通過(guò)循環(huán),下載證監(jiān)會(huì)所有的反饋意見(jiàn)

我們發(fā)現(xiàn)不同頁(yè)碼的網(wǎng)址如下:

第1頁(yè):
http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj
第2頁(yè):
http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/index_1.html
第3頁(yè):
http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/index_2.html
第25頁(yè)(最后一頁(yè)):
http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/index_24.html
發(fā)現(xiàn)第2頁(yè)后規(guī)律一致茉贡,第1頁(yè)和后面網(wǎng)頁(yè)不太一樣产阱,我們嘗試把第1頁(yè)的網(wǎng)址改成:http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/index_0.html
發(fā)現(xiàn)無(wú)法訪問(wèn),也就是第一頁(yè)就是不一樣块仆。

image

我們可以將所有url放入列表构蹬,需要用的時(shí)候循環(huán)取出去請(qǐng)求就行了,需要請(qǐng)求單獨(dú)某一頁(yè)就直接通過(guò)索引取出悔据。

urls=[]
baseurl='http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/'
urls.append(baseurl)
for i in range(1,25):
    url=f'http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/index_{i}.html'
    urls.append(url)

設(shè)置完成url列表后庄敛,我們通過(guò)for循環(huán)完成證監(jiān)會(huì)所有反饋意見(jiàn)的下載。全套代碼如下:


import re
from lxml import etree
import requests
savingpath='C:\\Users\\chenwei\\Desktop\\證監(jiān)會(huì)反饋意見(jiàn)\\首發(fā)反饋意見(jiàn)2'#設(shè)置反饋意見(jiàn)存放文件夾
urls=[]
baseurl='http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/'
urls.append(baseurl)
for i in range(1,25):
    url=f'http://www.csrc.gov.cn/pub/newsite/fxjgb/scgkfxfkyj/index_{i}.html'
    urls.append(url)
for url in urls:
    r=requests.get(url)
    r.encoding=r.apparent_encoding
    tree=etree.HTML(r.text)
    li_list=tree.xpath('/html/body/div/div/div[5]/div[2]/div[1]/div[2]/ul/li')#會(huì)把所有的li標(biāo)簽提取出來(lái)
    for li in li_list:
        href=li.xpath('./a/@href')[0][2:]#獲取反饋意見(jiàn)所在網(wǎng)址的后綴
        url=baseurl+href#獲取反饋意見(jiàn)所在網(wǎng)址
        date=li.xpath('./span/text()')[0]#獲取反饋意見(jiàn)發(fā)布時(shí)間
        r=requests.get(url)#請(qǐng)求反饋意見(jiàn)網(wǎng)址數(shù)據(jù) 
        r.encoding=r.apparent_encoding
        if re.search('a href="./.*?.docx?"',r.text):#經(jīng)分析網(wǎng)頁(yè)發(fā)現(xiàn)有些文件是doc/docx格式的科汗,有些是wps格式的
            url_href=re.findall('a href="./(.*?.docx?)"',r.text)[0]
            name=re.findall('h12>(.*?.docx?)</a>',r.text)[0]#獲取反饋意見(jiàn)文件名字
        else:
            url_href=re.findall('a href="./(.*?.wps)"',r.text)[0]
            name=re.findall('h12>(.*?.wps)</a>',r.text)[0]#獲取反饋意見(jiàn)文件名字
        name=date+name#給反饋意見(jiàn)文件名字加上發(fā)布時(shí)間
        url_head=re.findall('(.*)/.*?.html',url)[0]
        new_url=url_head+'/'+url_href#獲取反饋意見(jiàn)文件網(wǎng)址
        r=requests.get(new_url)
        filepath=savingpath+'\\'+name
        with open(filepath,'wb') as f:
            f.write(r.content)

最后運(yùn)行結(jié)果如下:

image

今天的分享到此為止啦藻烤,以上代碼是批量下載首次公開發(fā)行反饋意見(jiàn)回復(fù),下載再融資及并購(gòu)重組反饋意見(jiàn)回復(fù)只需要把url參數(shù)修改即可头滔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載怖亭,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末坤检,一起剝皮案震驚了整個(gè)濱河市兴猩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌早歇,老刑警劉巖倾芝,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異箭跳,居然都是意外死亡晨另,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門谱姓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)借尿,“玉大人,你說(shuō)我怎么就攤上這事屉来÷贩” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵奶躯,是天一觀的道長(zhǎng)帚桩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)嘹黔,這世上最難降的妖魔是什么账嚎? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任莫瞬,我火速辦了婚禮,結(jié)果婚禮上郭蕉,老公的妹妹穿的比我還像新娘疼邀。我一直安慰自己,他們只是感情好召锈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布旁振。 她就那樣靜靜地躺著,像睡著了一般涨岁。 火紅的嫁衣襯著肌膚如雪拐袜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天梢薪,我揣著相機(jī)與錄音蹬铺,去河邊找鬼。 笑死秉撇,一個(gè)胖子當(dāng)著我的面吹牛甜攀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琐馆,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼规阀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瘦麸?” 一聲冷哼從身側(cè)響起谁撼,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞎暑,沒(méi)想到半個(gè)月后彤敛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡了赌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玄糟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勿她。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阵翎,靈堂內(nèi)的尸體忽然破棺而出逢并,到底是詐尸還是另有隱情,我是刑警寧澤郭卫,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布砍聊,位于F島的核電站,受9級(jí)特大地震影響贰军,放射性物質(zhì)發(fā)生泄漏玻蝌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俯树。 院中可真熱鬧帘腹,春花似錦、人聲如沸许饿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)陋率。三九已至球化,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓦糟,已是汗流浹背赊窥。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狸页,地道東北人锨能。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像芍耘,于是被迫代替她去往敵國(guó)和親址遇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容