今兒是2019.1.29凉逛,今天是學(xué)習(xí)如何從章節(jié)目錄里爬出章節(jié)信息來(lái)。如下圖
我們看到章節(jié)信息都是包含在一個(gè)div層——ul層——a標(biāo)簽下面群井。我們?nèi)绾伟研畔⑴莱鰜?lái)呢状飞。其實(shí)昨天說了有find和find_all函數(shù)。由于我們爬的不是單個(gè)數(shù)據(jù)书斜,那么我們決定用find_all函數(shù)诬辈。
加深印象,刪除代碼荐吉,重新開始敲:
問題1:但是打印的時(shí)候焙糟,發(fā)現(xiàn)打印出來(lái)的是<Response [200]>,而不是網(wǎng)頁(yè)的源代碼样屠。后來(lái)發(fā)現(xiàn)requests.get()方法輸出的是網(wǎng)頁(yè)的對(duì)象酬荞。而非可打印出來(lái)的源代碼搓劫,所以需要輸出時(shí),要print(b.text)
問題2:BeautifulSoup庫(kù)中的find和find_all函數(shù)似乎必須先調(diào)用BeautifulSoup函數(shù)混巧,然后對(duì)函數(shù)輸出的結(jié)果起作用枪向。后來(lái)查了大神的回答:
發(fā)現(xiàn)這兩個(gè)函數(shù)只對(duì)Tag對(duì)象起作用,我當(dāng)前水平暫且認(rèn)為是帶標(biāo)簽的咧党,比如帶<div><div/>這種秘蛔。就可以調(diào)用find和find_all函數(shù)。調(diào)用方法:
find_all( name , attrs , recursive , text , **kwargs )
find( name , attrs , recursive , text , **kwargs )
發(fā)現(xiàn)傍衡,雖然下列兩個(gè)打印出來(lái)的結(jié)果相同
但是c是BeautifulSoup函數(shù)輸出的Tag對(duì)象深员,所以可以調(diào)用find_all函數(shù),而b.text則不行蛙埂,text屬于str類型倦畅,和string有點(diǎn)像。不屬于Tag對(duì)象绣的。我們?cè)囍胻ype()函數(shù)打印一下兩者的屬性如下:
清晰可見叠赐,兩者不同類型。雖然輸出直接看不出來(lái)屡江,但是使用type()就會(huì)很清楚芭概。