这篇文章主要介绍了 Python 实现可获取网易页面所有文本信息的网易网络爬虫功能, 涉及 Python 针对网页的获取,字符串正则判定等相关操作技巧, 需要的朋友可以参考下
本文实例讲述了 Python 实现可获取网易页面所有文本信息的网易网络爬虫功能.分享给大家供大家参考,具体如下:
希望本文所述对大家 Python 程序设计有所帮助.
#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()
来源: http://www.phperz.com/article/18/0128/362711.html