Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例


Posted in Python onJanuary 15, 2018

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

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python学习数据结构实例代码
May 11 Python
在Python中操作字典之update()方法的使用
May 22 Python
简单讲解Python中的闭包
Aug 11 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
Python性能分析工具Profile使用实例
Nov 19 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
python 实现简单的计算器(gui界面)
Nov 11 Python
python程序的组织结构详解
Dec 06 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 #Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 #Python
python逆向入门教程
Jan 15 #Python
Python3一行代码实现图片文字识别的示例
Jan 15 #Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 #Python
selenium python浏览器多窗口处理代码示例
Jan 15 #Python
100行python代码实现跳一跳辅助程序
Jan 15 #Python
You might like
DSP接收机前端设想
2021/03/02 无线电
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
JQuery设置时间段下拉选择实例
2014/12/30 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
python学习手册中的python多态示例代码
2014/01/21 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
python合并同类型excel表格的方法
2018/04/01 Python
django 中QuerySet特性功能详解
2019/07/25 Python
python输出决策树图形的例子
2019/08/09 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
python 实现任务管理清单案例
2020/04/25 Python
利用Python优雅的登录校园网
2020/10/21 Python
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
最新结婚典礼主持词
2014/03/14 职场文书
个人违纪检讨书
2014/09/15 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
素质教育学习心得体会
2016/01/19 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
学术会议开幕词
2016/03/03 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang