被爬蟲的網(wǎng)址是http://www.heibanke.com/lesson/crawler_ex00/需要完成的任務(wù)是在網(wǎng)址后面輸入顯示的數(shù)字轉(zhuǎn)入下一個(gè)網(wǎng)址,再次讀取顯示的數(shù)字,轉(zhuǎn)入下一個(gè)網(wǎng)址,以此循環(huán)
爬蟲要求
在爬蟲的時(shí)候需要需要用到兩個(gè)庫(kù),一個(gè)urllib,一個(gè)BeautifulSoup,urllib為python自帶的庫(kù),beautifulsoup需要自己安裝
pip install beautifulsoup4
安裝成功后導(dǎo)入
import urllibfrom bs4 import BeautifulSoup
urllib提供了一系列用于操作URL的功能打開(kāi)要爬取得網(wǎng)站:
urllib.urlopen(url)
beautifulsoup主要用于解析HTML,將 HTML轉(zhuǎn)化成數(shù)型結(jié)構(gòu),每個(gè)節(jié)點(diǎn)都是Python對(duì)象。所有對(duì)象可以歸納為4種:1.Tag2.NavigableString3.BeautifulSoup4.Comment如果一個(gè)HTML為
<[head])>The Dormouse's story
print soup.title>>>The Dormouse's story
print soup.title.string>>>The Dormouse's story
程序邏輯:讀出頁(yè)面上的數(shù)字,將數(shù)字加在url后面,繼續(xù)讀取新頁(yè)面的數(shù)字,直到進(jìn)入最后一個(gè)沒(méi)有數(shù)字的頁(yè)面,break程序如下:
import urllibfrom bs4 import BeautifulSoupimport re#這個(gè)庫(kù)導(dǎo)入是為了使用正則表達(dá)式讀取讀取找到的內(nèi)容中的數(shù)字url='http://www.heibanke.com/lesson/crawler_ex00/'number=['']#用于儲(chǔ)存讀到的數(shù)字while True: content = urllib.urlopen(url+number[0])#number為字符串,number[0]為數(shù)字 bs_obj = BeautifulSoup(content,"html.parser")#html.parser表示解析網(wǎng)站,不返回任何值 number = bs_obj.h3.string#網(wǎng)頁(yè)顯示出的“你需要在網(wǎng)址后輸入數(shù)字44513”在html的h3 tag中,number在這里讀出了h3里面的內(nèi)容 number= re.findall(r'\d+',number)#讀出了number里面的數(shù)字 if not number:#必須判斷頁(yè)面中還有是否還有number,沒(méi)有說(shuō)明已經(jīng)到了最后一個(gè)頁(yè)面,這時(shí)應(yīng)該跳出循環(huán),打印 bs_obj.h3.string break else: print number[0]print bs_obj.h3.string
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com