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