1,、導入項目所需要的的擴展庫
1# -*- coding: UTF-8 -*- 2 3# 導入 urllib 用于參數(shù)數(shù)據(jù)編碼 4import urllib 5# 導入 urllib2 用于執(zhí)行核心爬蟲 6import urllib2 7 8# 導入 UserAgent 用于生成 UA 9from fake_useragent import UserAgent
2、執(zhí)行網(wǎng)頁請求函數(shù) 1# 執(zhí)行網(wǎng)頁請求 2def req_url(self,full_url): 3 headers = { 4 # 隨機生成一個 User-Agent 5 'User-Agent': self.user_agent.random 6 } 7 # 構(gòu)造 Request 請求對象 8 request = urllib2.Request(headers=headers, url=full_url) 9 # 執(zhí)行請求 10 response = urllib2.urlopen(request) 11 return response.read()
3,、保存網(wǎng)頁下載的 html 源代碼 1# 將爬取下來的 html 源代碼保存 2def save_doc(self,html_doc, file_name): 3 print "開始保存文件:", file_name 4 with open(file_name, 'w') as f: 5 f.write(html_doc) 6 print "完成文件:", file_name, " 保存"
4,、組裝完整的爬蟲地址、參數(shù)組裝等 1# 構(gòu)造爬蟲環(huán)境,、并執(zhí)行 2def run_spider(self): 3 for page in range(self.begin, self.end + 1): 4 # 計算頁碼 5 pn = (page - 1) * 50 6 # 對中文參數(shù)進行編碼 7 name = urllib.urlencode({'kw': self.tieba_name}) 8 # 組裝完整的爬蟲地址 9 full_url = self.url + name + '&pn=' + str(pn) 10 # 根據(jù)頁數(shù)定義文件名稱 11 file_name = str(page) + '.html' 12 # 執(zhí)行爬蟲網(wǎng)頁請求 13 html_doc = self.req_url(full_url) 14 # 保存文件 15 self.save_doc(html_doc, file_name)
5,、用戶自定義輸入?yún)?shù) 1# 用戶輸入相關(guān)數(shù)據(jù) 2url = 'http://tieba.baidu.com/f?' 3tieba_name = raw_input('請輸入要爬取的貼吧名稱:') 4begin = int(raw_input('請輸入開始頁碼:')) 5end = int(raw_input('請輸入結(jié)束頁碼:'))
|