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二叉树的实现实例
Nov 21 Python
python实现的udp协议Server和Client代码实例
Jun 04 Python
Python通过递归遍历出集合中所有元素的方法
Feb 25 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
Python实现图片转字符画的代码实例
Feb 22 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
python中实现栈的三种方法
Dec 19 Python
如何使用PyCharm及常用配置详解
Jun 03 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
图书管理程序(二)
2006/10/09 PHP
php 获取完整url地址
2008/12/20 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
js切换div css注意的细节
2012/12/10 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
深入理解python try异常处理机制
2016/06/01 Python
Python语言描述最大连续子序列和
2017/12/05 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
python与idea的集成的实现
2020/11/20 Python
scrapy-splash简单使用详解
2021/02/21 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
资料员的岗位职责
2013/11/20 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
个人先进事迹材料
2014/12/29 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
道歉信怎么写
2015/05/12 职场文书
故意伤害辩护词
2015/05/21 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书