首次接觸爬蟲(chóng)苛蒲,這個(gè)程序可以讓初學(xué)者明白爬蟲(chóng)是啥棒口,爬蟲(chóng)的基本邏輯漾肮。
(參照網(wǎng)易云課堂heibanke老師的程序編寫(xiě)的橡卤。heibanke老師的課程講得很清楚柜与,感興趣的選手可以去看看)
被爬蟲(chóng)的網(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)
在爬蟲(chóng)的時(shí)候需要需要用到兩個(gè)庫(kù)夺英,一個(gè)urllib可缚,一個(gè)BeautifulSoup,urllib為python自帶的庫(kù),beautifulsoup需要自己安裝
pip install beautifulsoup4
安裝成功后導(dǎo)入
import urllib
from 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.Tag
2.NavigableString
3.BeautifulSoup
4.Comment
如果一個(gè)HTML為
<html>
<[head])>
<title>
The Dormouse's story
</title>
print soup.title
>>><title>The Dormouse's story</title>
print soup.title.string
>>>The Dormouse's story
程序邏輯:
讀出頁(yè)面上的數(shù)字椿猎,將數(shù)字加在url后面惶岭,繼續(xù)讀取新頁(yè)面的數(shù)字寿弱,直到進(jìn)入最后一個(gè)沒(méi)有數(shù)字的頁(yè)面,break
程序如下:
import urllib
from bs4 import BeautifulSoup
import 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