<爬蟲>常見網址的爬蟲整理
阿新 • • 發佈:2020-07-16
借鑑
# 是告訴作業系統執行這個指令碼的時候,呼叫/usr/bin下的python3直譯器; # !/usr/bin/python3 # -*- coding: utf-8 -*- """ 請求URL分析 https://tieba.baidu.com/f?kw=魔獸世界&ie=utf-8&pn=50 請求方式分析 GET 請求引數分析 pn每頁50發生變化,其他引數固定不變 請求頭分析 只需要新增User-Agent """ # 程式碼實現流程 # 1. 實現面向物件構建爬蟲物件 # 2. 爬蟲流程四步驟 # 2.1 獲取url列表 # 2.2 傳送請求獲取響應 # 2.3 從響應中提取資料 # 2.4 儲存資料 import requests class TieBa_Spier(): def __init__(self, max_page, kw): # 初始化 self.max_page = max_page # 最大頁碼 self.kw = kw # 貼吧名稱 self.base_url = "https://tieba.baidu.com/f?kw={}&ie=utf-8&pn={}" self.headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" } def get_url_list(self): """獲取url列表""" # 根據pn每50進入下一頁,構建url列表 return [self.base_url.format(self.kw, pn) for pn in range(0, self.max_page * 50, 50)] def get_content(self, url): """傳送請求獲取響應內容""" response = requests.get( url=url, headers=self.headers ) # print(response.text) return response.content def save_items(self, content, idx): """從響應內容中提取資料""" with open('{}.html'.format(idx), 'wb') as f: f.write(content) return None def run(self): """執行程式""" # 獲取url_list url_list = self.get_url_list() for url in url_list: # 傳送請求獲取響應 content = self.get_content(url) # 儲存資料,按照url的索引+1命名儲存的檔案 items = self.save_items(content, url_list.index(url) + 1) # 測試 # print(items) if __name__ == '__main__': # 最大頁碼,貼吧名 spider = TieBa_Spier(2, "神無月") spider.run()