剛開(kāi)始學(xué)習(xí)爬蟲(chóng),嘗試著使用Requests和Beautifulsoup對(duì)上海市高級(jí)人民法院開(kāi)通公告信息(http://www.hshfy.sh.cn/shfy/gweb2017/ktgg_search.jsp?zd=splc)進(jìn)行抓取。
一屁使、導(dǎo)入所需庫(kù)
二、編寫(xiě)相關(guān)函數(shù)
1戈盈、獲取網(wǎng)頁(yè)
函數(shù)get_html(url,data)有兩個(gè)參數(shù),url表示需要獲取的目標(biāo)url;data參數(shù)表示攜帶在url后的數(shù)據(jù)(這里有最早開(kāi)庭時(shí)間‘pktrqks’、最晚開(kāi)庭時(shí)間‘ktrqjs’和頁(yè)數(shù)‘page_num’)沪曙,使用攜帶的參數(shù)可以實(shí)現(xiàn)翻頁(yè)功能,對(duì)每一頁(yè)進(jìn)行數(shù)據(jù)抓取萎羔。
response.encoding="gbk"將網(wǎng)頁(yè)的編碼設(shè)置為“gbk”珊蟀,不然抓取出的html會(huì)亂碼。
2外驱、解析傳入的網(wǎng)頁(yè)育灸,抽取出網(wǎng)頁(yè)中的字段內(nèi)容
這里yield關(guān)鍵字的作用是將每行的關(guān)鍵字內(nèi)容形成一個(gè)?generator,可以迭代昵宇,優(yōu)點(diǎn)是這種方式在數(shù)據(jù)量較大時(shí)比存成列表然后再返回占用的內(nèi)存會(huì)少很多磅崭。
3、將爬取的數(shù)據(jù)寫(xiě)入文件中
4瓦哎、獲取一共需要爬取的頁(yè)數(shù)
由于原網(wǎng)頁(yè)是翻頁(yè)的砸喻,我們所需要的信息分布在多個(gè)頁(yè)上,首先獲取總共需要爬取的頁(yè)數(shù)蒋譬,然后再進(jìn)行信息爬取割岛。
這里做了異常處理,當(dāng)爬蟲(chóng)遇到網(wǎng)站反爬蟲(chóng)時(shí)犯助,程序捕獲異常并休眠設(shè)定的時(shí)間ERROR_SLEEP_TIME癣漆,繼續(xù)運(yùn)行程序抽取到<strong></strong>標(biāo)簽中的內(nèi)容,該標(biāo)簽中的內(nèi)容是所有符合篩選條件的記錄數(shù)剂买,計(jì)算得出總共的頁(yè)數(shù)惠爽。
三、主函數(shù)
四瞬哼、爬取結(jié)果