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模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
python实现机器人行走效果
Jan 29 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
python装饰器练习题及答案
Nov 01 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
Python安装whl文件过程图解
Feb 18 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
python神经网络编程实现手写数字识别
May 27 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 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实现jQuery扩展函数
2009/10/30 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
JS常见算法详解
2017/02/28 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
Python中的getopt函数使用详解
2015/07/28 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
python异常触发及自定义异常类解析
2019/08/06 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
pytorch简介
2020/11/11 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
会计出纳员的自我评价
2014/01/15 职场文书
爱与责任演讲稿
2014/05/20 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
学习作风建设心得体会
2014/10/22 职场文书
2014司机年终工作总结
2014/12/05 职场文书
React中的Context应用场景分析
2021/06/11 Javascript