?先我們創建?個 python?件, tiebaSpider.py,我們要完成的是,輸??個百度貼吧的地址,?如:
百度貼吧 LOL 吧第??:http://tieba.baidu.com/f?kw=l... 這個是 lol 吧的第??的 url 地址,如果打開第??,你會發現他的 url 如下: 第??: http://tieba.baidu.com/fkw=lo...
第三?: http://tieba.baidu.com/f?kw=l...
發現規律了吧,貼吧中每個??不同之處,就是 url 最后的 pn 的值,其余的都是?樣的,我們可以抓住這個規律,
1、簡單寫?個?爬?程式,來爬取百度 LOL 吧的所有??
我們已經之前寫出?個爬取?個??的代碼,現在,我們可以將它封裝成?個?函式 loadPage,供我們使?,
def loadPage(url): ''' ''' 通過 URL 請求爬取到 html 靜態??源代碼 url:需要爬取的 url 地址 req = urllib2.Request(url) response = urllib2.urlopen(req) html = response.read() return html
接下來,我們寫?個百度貼吧爬?接?,我們需要傳遞 3 個引數給這個接?, ?個是我們要爬取的 url 地址,以及起始?碼和終??碼,表示要爬取?碼的范圍,
def tiebaSpider(url, beginPage, endPage): ''' ''' 百度貼吧爬?核?程式: url: 要爬取的 url 地址 beginPage: 爬?貼吧的起始?數 endPage: 爬?貼吧的終??數 user_agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 ; Trident/5.0;" # IE9.0 的 User-Agent headers = {"User-Agent":user_agent} for i in range(beginPage, endPage+1): pn = 50 * (i - 1) html = loadPage(url+str(pn))
最后如果我們希望將爬取到了每?的資訊存盤在本地磁盤上,我們可以簡單寫?個存盤?件的接?,
def writeFile(file_name, text): ''' ''' 將字串內容寫到?件中: file_name: ?件路徑 text: 要寫進的字串 print "正在存盤?件" + file_name f = open(file_name, 'w+') f.write(text) f.close()
ok,接下來就是寫?個 main 函式吧,然后提示?戶輸?即將爬取的百度貼吧 url 地址, ( 注意 :百度貼吧最后?碼” pn= “后的數字,這些數字為我們傳?的?碼引數,所以我們再提供的時候不能包括數字)
if name == ' main ': tiebaurl = str(raw_input('請輸?貼吧的地址, 去掉 pn=后?的數字:')) beginPage = int(raw_input('請輸?開始的?數')) endPage = int(raw_input('請輸?結束的?數')) tiebaSpider(tiebaurl, beginPage, endPage)
綜上, 全部代碼完成,好了,最后我們測驗?下,
2、爬蟲代碼測驗
運?后,輸?lol 吧的 url 地址 http://tieba.baidu.com/f?kw=l... ( 注意=號后?不要加數字,因為我們要?動添加 )
Power@PowerMac ~$ python tiebaSpider.py 請輸?貼吧的地址, 去掉 pn=后?的數字: http://tieba.baidu.com/f?kw=lol&i e=utf-8&pn= 請輸?開始的?數 5 請輸?結束 的?數 10 正在下載第 5 個?? 正在存盤?件 5.html 正 在下載第 6 個?? 正在 存盤?件 6.html 正在下 載第 7 個?? 正在存盤 ?件 7.html 正在下載第 8 個?? 正在存盤?件 8.html 正在下載第 9 個 ?? 正在存盤?件 9.html 正在下載第 10 個?? 正在存盤?件 10.html
3、總結
其實很多?站都是這樣的,當前?址下會有?個 html??,分別對應?址后的??序號,
這樣?個簡單的爬?程式就可以批量獲取?站??原始碼,然后我們就可以從中篩選??想要的資料資訊了,
點擊獲取全套python爬蟲視頻教程,從爬蟲基礎到高級專案實戰教程,非常值得零基礎的人學習爬蟲,理論+專案實踐,終成爬蟲大神,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/43174.html
標籤:Python
