本文实例讲述了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