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获得时间的实例说明
Mar 25 Python
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
python采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
python分块读取大数据,避免内存不足的方法
Dec 10 Python
python按照多个条件排序的方法
Feb 08 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
Python 自由定制表格的实现示例
Mar 20 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
Django框架中模型的用法
Jun 10 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类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
php字符集转换
2017/01/23 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
js转换对象为xml
2017/02/17 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
Sanic框架安装与简单入门示例
2018/07/16 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
python修改txt文件中的某一项方法
2018/12/29 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
解析python实现Lasso回归
2019/09/11 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
会计毕业生求职简历的自我评价
2013/10/20 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
小学运动会演讲稿
2014/08/25 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android