1. 程式人生 > >爬蟲(GET)——爬取多頁的html

爬蟲(GET)——爬取多頁的html

調度 不同 odin 新建 文件內容 存儲 rom 寫入 adp

工具:python3

目標:將編寫的代碼封裝,不同函數完成不同功能,爬取任意頁數的html

新學語法:with open as

除了有更優雅的語法,with還可以很好的處理上下文環境產生的異常。

 1 # coding:utf-8
 2 
 3 import urllib.request
 4 
 5 def loadPage(fullurl,filename):
 6     """作用:根據url發送請求,獲取服務器響應請求"""
 7     ua_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
"} 8 print("正在下載" + filename) 9 10 request = urllib.request.Request(fullurl, headers=ua_headers ) 11 response = urllib.request.urlopen(request) 12 return response.read() 13 14 15 def writePage(html, filename): 16 """ 17 作用:將html內容寫入到本地 18 html:服務器相應文件內容 19 """ 20 print("
正在寫入" + filename)
# 新建文件,存儲html信息
21 with open(filename, "w") as f: 22 f.write(str(html)) 23 24 25 def tiebaSpider(url, beginpage, endpage): 26 """ 27 作用:貼吧爬蟲調度器,負責組合處理每個頁面的url 28 url:貼吧url的前部分 29 beginPage: 起始頁 30 endPage: 結束頁 31 :return: 32 """
# 構造每頁的url和文件名
33 for page in range(beginpage, endpage+1): 34 pn = (page-1)*50 35 fullurl = url + "&" + str(pn) 36 filename = "" + str(page) + "頁.html" 37 38 html = loadPage(fullurl, filename) 39 writePage(html, filename) 40 print("完成!") 41 42 43 if __name__ == "__main__": 44 kw = input("請輸入要爬取的貼吧名: ") 45 beginPage = int(input("請輸入起始頁: ")) 46 endPage = int(input("請輸入結束頁: ")) 47 48 url = "http://tieba.baidu.com/f?" 49 kw = urllib.parse.urlencode({"kw": kw}) 50 51 url = url + kw 52 53 tiebaSpider(url, beginPage, endPage)

爬蟲(GET)——爬取多頁的html