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 django集成cas验证系统
Jul 14 Python
Python实现去除代码前行号的方法
Mar 10 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
python elasticsearch环境搭建详解
Sep 02 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
python生成任意频率正弦波方式
Feb 25 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
django模板获取list中指定索引的值方式
May 14 Python
Python如何在bool函数中取值
Sep 21 Python
Python之字典添加元素的几种方法
Sep 30 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
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
php微信支付接口开发程序
2016/08/02 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
python自动点赞功能的实现思路
2020/02/26 Python
python一些性能分析的技巧
2020/08/30 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
革命先烈的英雄事迹材料
2014/02/15 职场文书
期终自我鉴定
2014/02/17 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
2014年实验室工作总结
2014/12/03 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
婚育证明样本
2015/06/16 职场文书
员工聘用合同范本
2015/09/21 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
Python 正则模块详情
2021/11/02 Python
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android