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使用turtule画五角星的方法
Jul 09 Python
Python实现多并发访问网站功能示例
Jun 19 Python
Python selenium抓取微博内容的示例代码
May 17 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
python和php学习哪个更有发展
Jun 17 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
python+opencv实现视频抽帧示例代码
Jun 11 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
php adodb连接不同数据库
2009/03/19 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python 中的列表解析和生成表达式
2011/03/10 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
Python ORM编程基础示例
2020/02/02 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
Python对excel的基本操作方法
2021/02/18 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
年会活动策划方案
2014/01/23 职场文书
母亲节感恩寄语
2014/02/21 职场文书
质量月活动策划方案
2014/03/10 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
电力安全学习心得体会
2016/01/18 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL