本文實例講述了Python實現可獲取網易頁面所有文本信息的網易網絡爬蟲功能。分享給大家供大家參考,具體如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#coding=utf-8 #--------------------------------------- # 程序:網易爬蟲 # 作者:ewang # 日期:2016-7-6 # 語言:Python 2.7 # 功能:獲取網易頁面中的文本信息并保存到TXT文件中。 #--------------------------------------- import string import urllib2 import re import os class WangYi_Spider: #申明相關屬性 def __init__( self ): #給wangyiUrl屬性賦值 self .wangyiUrl = "http://www.163.com/" #用來保存頁面中文字信息 self .pageinfor = [] print u '已經啟動網易爬蟲,爬爬...' #初始化加載頁面并將其轉碼存儲 def wangyi( self ): #讀取頁面的原始信息并將其從gbk轉碼 Page = urllib2.urlopen( self .wangyiUrl).read().decode( 'gbk' ) #獲取頁面標題 title = self .find_title(Page) print u '網頁名稱:' + title #獲取頁面中文本信息 self .save_infor(title) #查找頁面標題 def find_title( self ,page): #匹配<title>xxxx</title> myTitle = re.search(r '<title>(.*?)</title>' ,page,re.S) #初始化標題名為暫無標題 title = u '暫無標題' #如果標題存在把標題賦值給title if myTitle: #(.*?)這稱作一個group,組是從1開始 title = myTitle.group( 1 ) else : print u '爬蟲報告:無法加載網頁標題...' return title #保存頁面信息 def save_infor( self ,title): #加載頁面文本信息到數組中 self .get_infor() #創建并打開本地文件 f = open (title + '.txt' , 'w+' ) #把獲取的頁面信息寫入文件中 f.writelines( self .pageinfor) #關閉打開的文件 f.close() print u '爬蟲報告:文件' + title + '.txt' + u '已經下載:' + os.getcwd() print u '按任意鍵退出...' raw_input () #獲取頁面源碼并將其存儲到數組中 def get_infor( self ): #獲取頁面中的源碼 page = urllib2.urlopen( self .wangyiUrl).read() #把頁面中的內容gbk解碼然后獲取頁面中所有的文本信息 self .deal_infor(page.decode( 'gbk' )) #從頁面代碼中獲取所需文信息 def deal_infor( self ,page): #獲取<em >XXX</em>的文本信息XXX emTagItems = re.findall( "<em.*?>(\W+?)</em>" ,page,re.S) #獲取<span>XXXX</a>的文本信息XXXX spanTagItems = re.findall( "<span>(\W+?)</span>" ,page,re.S) #獲取<a .*>XXXX</a>的文本信息XXXX aTagItems = re.findall( "<a.*?>(\W+?)</a>" ,page,re.S) #把em tag中獲取的文本信息添加到數組pageinfor中 for emItem in emTagItems: #對獲取的文本信息用gbk進行編碼 self .pageinfor.append(emItem.encode( 'gbk' ) + '\n' ) #把span tag中獲取的文本信息添加到數組pageinfor中 for spanItem in spanTagItems: #對獲取的文本信息用gbk進行編碼 self .pageinfor.append(spanItem.encode( 'gbk' ) + '\n' ) #把a tag中獲取的文本信息添加到數組pageinfor中 for aItem in aTagItems: #對獲取的文本信息用gbk進行編碼 self .pageinfor.append(aItem.encode( 'gbk' ) + '\n' ) #------------程序入口處---------------- print u """#--------------------------------------- # 程序:網易爬蟲 # 作者:ewang # 日期:2016-7-6 # 語言:Python 2.7 # 功能:獲取網易頁面中的文本信息并保存到TXT文件中 #-------------------------------------------------- """ wangyiSpider = WangYi_Spider() wangyiSpider.wangyi() |
希望本文所述對大家Python程序設計有所幫助。
原文鏈接:http://blog.csdn.net/henni_719/article/details/51839504