首先要使用的第類庫有 urllib下的request 以及urllib下的parse 以及 time包 random包 之後我們定義一個名叫BaiduSpider類用來爬取信息 屬性有 url:用來爬取的網址 headers:請求頭 之後我們定義三個方法 不涉及清洗數據 獲取頁面 保存數據 主函數 ...
首先要使用的第類庫有 urllib下的request 以及urllib下的parse 以及 time包 random包
之後我們定義一個名叫BaiduSpider類用來爬取信息
屬性有 url:用來爬取的網址 headers:請求頭
class BaiduSpider(object): def __init__(self): self.url = 'http://tieba.baidu.com/f?kw={}&pn={}' self.headers = {'User-Agent':'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'}
之後我們定義三個方法 不涉及清洗數據
獲取頁面
1 #獲取頁面 2 def get_page(self,url): 3 #定義請求對象 4 req = request.Request(url=url,headers=self.headers) 5 #發起請求 6 res = request.urlopen(req) 7 #獲取相應對象 8 html = res.read().decode('utf-8', 'ignore') 9 return html
保存數據
#保存數據 def write_page(self,filename,html): #將數據保存到本地 with open(filename,'w',encoding='utf-8') as f: f.write(html)
主函數
#主函數 def main(self): name = input('請輸入貼吧名:>>>>') start = int(input('請輸入起始頁')) end = int(input('請輸入終止頁')) for page in range(start,end+1): #拼接URL地址 'http://tieba.baidu.com/f?kw{}&pn={}' #進行編碼 將中文字元編碼為url地址編碼 kw = parse.quote(name) #獲取當前頁數 pn = (page-1)*50 #進行url地址的拼接 url = self.url.format(kw,pn) #獲取相應 html = self.get_page(url) filename = '{}-第{}頁.html'.format(name,page) self.write_page(filename,html) #提示 print('第{}頁爬取成功'.format(page)) #控制爬取速度 time.sleep(random.randint(1,3))
最後 所有的代碼展示如下
#導入模塊 from urllib import request,parse import time import random class BaiduSpider(object): def __init__(self): self.url = 'http://tieba.baidu.com/f?kw={}&pn={}' self.headers = {'User-Agent':'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'} #獲取頁面 def get_page(self,url): #定義請求對象 req = request.Request(url=url,headers=self.headers) #發起請求 res = request.urlopen(req) #獲取相應對象 html = res.read().decode('utf-8', 'ignore') return html #解析數據 def parse_page(self): pass #保存數據 def write_page(self,filename,html): #將數據保存到本地 with open(filename,'w',encoding='utf-8') as f: f.write(html) #主函數 def main(self): name = input('請輸入貼吧名:>>>>') start = int(input('請輸入起始頁')) end = int(input('請輸入終止頁')) for page in range(start,end+1): #拼接URL地址 'http://tieba.baidu.com/f?kw{}&pn={}' #進行編碼 將中文字元編碼為url地址編碼 kw = parse.quote(name) #獲取當前頁數 pn = (page-1)*50 #進行url地址的拼接 url = self.url.format(kw,pn) #獲取相應 html = self.get_page(url) filename = '{}-第{}頁.html'.format(name,page) self.write_page(filename,html) #提示 print('第{}頁爬取成功'.format(page)) #控制爬取速度 time.sleep(random.randint(1,3)) if __name__ == '__main__': spider = BaiduSpider() spider.main()
一個非常非常簡單的爬蟲就完成了 讓我們看一下運行效果截圖:
html文件打開後 與我們正常打開的網頁並沒有太大的差別