urllib爬取百度貼吧貼子頁面

2021-08-21 04:17:36 字數 1778 閱讀 8234

# coding:utf-8

import urllib.request

import urllib

urllib2 = urllib.request

def loadpage(url,filename):

"""作用:根據url傳送請求,獲取伺服器響應檔案

filename:處理的檔名

"""headers =

request = urllib2.request(url,headers=headers)

response = urllib2.urlopen(request)

html = response.read()

return html

# return html.decode('utf-8')

def writepage(html,filename):

"""作用:將html內容寫入到本地

html:伺服器響應檔案內容

"""print("正在儲存"+filename)

# 檔案寫入,這樣寫無需寫close(),需要編碼轉換

with open(filename,"w+",encoding='utf-8') as f:

f.write(html.decode("utf-8"))

print('-'*30)

def tiebaspider(url,beginpage,endpage,kw):

"""貼吧爬蟲排程器,負責組合處理每個頁面的url位址

url:貼吧url的前半部分

beginpage:起始頁

endpage:結束頁

"""for page in range(beginpage,endpage+1):

pn = (page-1)*50

filename = str(kw)+"貼吧第" + str(page) + "頁.html"

fullurl = url + "&pn=" + str(pn)

# print(fullurl)

html = loadpage(fullurl,filename)

# print(html)

writepage(html,filename)

print("已完成,謝謝使用!")

if __name__ == "__main__":

kw = input("請輸入需要爬取貼吧名字:")

while true:

try:

beginpage = int(input("請輸入要抓取'%s'貼吧的開始頁數:"%kw))

endpage = int(input("請輸入要抓取'%s'貼吧的結束頁數:"%kw))

if int(endpage)>= int(beginpage):

url = ""

key = urllib.parse.urlencode()

fullurl = url + key

tiebaspider(fullurl, beginpage,endpage,kw)

break

else:

print("請輸入正確的頁數,並且結束頁數要大於等於開始頁數")

except:

print("請輸入正確的頁數!")

使用urllib爬取百度貼吧

博主是新手,只是做個筆記,不好勿噴 手動輸入主題,並爬取目標主題內容的前三頁 爬取之後儲存在html檔案當中 第一步建立乙個類,類中定義三個函式,分別為主函式 爬取函式和儲存函式。第二步找到相應的請求頭以及url,為防止將url寫死,觀察url組成部分,為最終進行相應的拼接做準備。第三步手動設定輸入...

爬取百度貼吧

import urllib.request import urllib.parse import os,time 輸入貼吧名字 baname input 請輸入貼吧的名字 start page int input 請輸入起始頁 end page int input 請輸入結束頁 不完整的url ur...

爬取百度貼吧

帶入需要使用的包 from urllib import request,parse importos 基礎知識 變數賦值 字串賦值 爬取的關鍵字 kw lol 數值賦值 爬取的頁數範圍 start 1end 4 輸出 print kw,start,end 宣告需要爬取的連線 base url 建立資...