獲取貼吧對應頁html及寫入檔案

2022-09-11 01:30:22 字數 3818 閱讀 6887

1

#!/usr/bin/env python2#

-*- coding:utf-8 -*-

3from urllib import

request

4from random import

choice

5import

urllib.parse67

defloadpage(url, filename):

8'''

9作用:根據url,獲取響應檔案

10url: 需要爬取的位址

11filename: 處理的檔名

12'''

13 user_agents =[14"

mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; acoobrowser; .net clr 1.1.4322; .net clr 2.0.50727)",

15"mozilla/4.0 (compatible; msie 7.0; windows nt 6.0; acoo browser; slcc1; .net clr 2.0.50727; media center pc 5.0; .net clr 3.0.04506)",

16"mozilla/4.0 (compatible; msie 7.0; aol 9.5; aolbuild 4337.35; windows nt 5.1; .net clr 1.1.4322; .net clr 2.0.50727)",

17"mozilla/5.0 (windows; u; msie 9.0; windows nt 9.0; en-us)",

18"mozilla/5.0 (compatible; msie 9.0; windows nt 6.1; win64; x64; trident/5.0; .net clr 3.5.30729; .net clr 3.0.30729; .net clr 2.0.50727; media center pc 6.0)",

19"mozilla/5.0 (compatible; msie 8.0; windows nt 6.0; trident/4.0; wow64; trident/4.0; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; .net clr 1.0.3705; .net clr 1.1.4322)",

20"mozilla/4.0 (compatible; msie 7.0b; windows nt 5.2; .net clr 1.1.4322; .net clr 2.0.50727; infopath.2; .net clr 3.0.04506.30)",

21"",

22"",

23"mozilla/5.0 (windows; u; windows nt 5.1; en-us; rv:1.8.1.2pre) gecko/20070215 k-ninja/2.1.1",

24"mozilla/5.0 (windows; u; windows nt 5.1; zh-cn; rv:1.9) gecko/20080705 firefox/3.0 kapiko/3.0",

25"mozilla/5.0 (x11; linux i686; u;) gecko/20070322 kazehakase/0.4.5",

26"mozilla/5.0 (x11; u; linux i686; en-us; rv:1.9.0.8) gecko fedora/1.9.0.8-1.fc10 kazehakase/0.5.6",

27"",

28"",

29"opera/9.80 (macintosh; intel mac os x 10.6.8; u; fr) presto/2.9.168 version/11.52"30

]31 user_agent =choice(user_agents)

32print('

'+filename)

33 req =request.request(url)

34 req.add_header('

user-agent

',user_agent)

35return

str(request.urlopen(req).read(),encoding='utf-8')

36

37def

writepage(html, filename):

38'''

39作用: 將html寫入檔案

40html: 伺服器響應檔案內容

41'''

42print('

正在儲存

'+filename)

4344

#不需要做檔案關閉操作45#

等同於open /write /close

46 with open(filename,'

w',encoding='

utf-8

') as f:

47f.write(html)

48print('

-'*30)

4950

deftiebaspider(url, start, end):

51'''

52作用:貼吧爬蟲排程器, 負責處理每個頁面的url

53url: 貼吧url的前部分

54start: 起始頁

55end: 終止頁

56'''

57for page in range(start, end+1):

58 pn = (page-1)*50

5960 filename = '

第'+str(page)+'

頁.html'61

#該貼吧每一頁相對應的url

62 fulurl = url +"

&pn=

" +str(pn)

6364

#print(fulurl)

65 html =str(loadpage(fulurl, filename))

66writepage(html, filename)

6768

print('

thank you')

6970

#當.py檔案被直接執行時,if 之下的**塊將被執行

71if

__name__ == '

__main__':

72 url = '

'73 key = input('

please input keywords:')

74 beginpage = int(input('

please input start pagenum:'))

75 endpage = int(input('

please input end pagenum:'))

7677

#關鍵字轉碼

78 m =

79 keyword =urllib.parse.urlencode(m)80#

print(keyword)

81 fulurl = url +keyword

8283 tiebaspider(fulurl, beginpage, endpage)

執行結果,檔案中儲存的資料,如下:

存在亂碼問題!!!

Python爬蟲 獲取貼吧內容

參考寫的第乙個比較完整的python爬蟲程式。coding utf 8 import urllib import urllib2 import re 處理頁面標籤類 class tool 去除img標籤,7位長空格 removeimg re.compile 刪除超連結標籤 removeaddr re...

用正則獲取百度貼吧當日新貼

wget linux 下獲取 http頁面的工具 o 表示輸出到管道 而不是檔案 grep linux 正規表示式工具 p 使用 prel語法 o 只輸出匹配到的內容 而不是一行 p 0 9 首頁貼子的鏈結,格式為 a href p 3444444444 非貪婪匹配任意字元 j user card....

Python獲取html頁內容

乙個簡單的python獲取html頁面 版本說明 testing system os windows 7 python 3.7.2 tags v3.7.2 9a3ffc0492,dec 23 2018,22 20 52 msc v.1916 32 bit intel on win32 安裝模組 1....