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的内建模块collections的教程
Apr 28 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
关于python中的xpath解析定位
Mar 06 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
python中数字是否为可变类型
Jul 08 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
python创建字典及相关管理操作
Apr 13 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 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根据IP地址获取所在城市具体实现
2013/11/27 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
php自动加载方式集合
2016/04/04 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
车间操作工岗位职责
2013/12/19 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
环境卫生倡议书
2014/08/29 职场文书
领导干部保密承诺书
2014/08/30 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
2014年图书室工作总结
2014/12/09 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
2016猴年春节问候语
2015/11/11 职场文书