Python简单爬虫导出CSV文件的实例讲解


Posted in Python onJuly 06, 2018

流程:模拟登录→获取Html页面→正则解析所有符合条件的行→逐一将符合条件的行的所有列存入到CSVData[]临时变量中→写入到CSV文件中

核心代码:

####写入Csv文件中
      with open(self.CsvFileName, 'wb') as csvfile:
        spamwriter = csv.writer(csvfile, dialect='excel')
        #设置标题
        spamwriter.writerow(["游戏账号","用户类型","游戏名称","渠道","充值类型","充值金额","返利金额","单号","日期"])
        #将CsvData中的数据循环写入到CsvFileName文件中
        for item in self.CsvData:
          spamwriter.writerow(item)

完整代码:

# coding=utf-8
import urllib
import urllib2
import cookielib
import re
import csv
import sys
 
class Pyw():
  #初始化数据
  def __init__(self):
    #登录的Url地址
    self.LoginUrl="http://v.pyw.cn/login/check"
    #所要获取的Url地址
    self.PageUrl="http://v.pyw.cn/Data/accountdetail/%s"
    # 传输的数据:用户名、密码、是否记住用户名
    self.PostData = urllib.urlencode({
      "username": "15880xxxxxx",
      "password": "a123456",
      "remember": "1"
    })
    #第几笔记录
    self.PageIndex=0;
    #循环获取共4页内容
    self.PageTotal=1
    #正则解析出tr
    self.TrExp=re.compile("(?isu)<tr[^>]*>(.*?)</tr>")
    #正则解析出td
    self.TdExp = re.compile("(?isu)<td[^>]*>(.*?)</td>")
    #创建cookie
    self.cookie = cookielib.CookieJar()
    #构建opener
    self.opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie))
    #解析页面总页数
    self.Total=4
    #####设置csv文件
    self.CsvFileName="Pyw.csv"
    #####存储Csv数据
    self.CsvData=[]
 
   #解析网页中的内容
  def GetPageItem(self,PageHtml):
    #循环取出Table中的所有行
    for row in self.TrExp.findall(PageHtml):
      #取出当前行的所有列
      coloumn=self.TdExp.findall(row)
      #判断符合的记录
      if len(coloumn) == 9:
        # print "游戏账号:%s" % coloumn[0].strip()
        # print "用户类型:%s" % coloumn[1].strip()
        # print "游戏名称:%s" % coloumn[2].strip()
        # print "渠道:%s" % coloumn[3].strip()
        # print "充值类型:%s" % coloumn[4].strip()
        # print "充值金额:%s" % coloumn[5].strip().replace("¥", "")
        # print "返利金额:%s" % coloumn[6].strip().replace("¥", "")
        # print "单号:%s" % coloumn[7].strip()
        # print "日期:%s" % coloumn[8].strip()
        #拼凑行数据
        d=[coloumn[0].strip(),
          coloumn[1].strip(),
          coloumn[2].strip(),
          coloumn[3].strip(),
          coloumn[4].strip(),
          coloumn[5].strip().replace("¥", ""),
          coloumn[6].strip().replace("¥", ""),
          coloumn[7].strip(),
          coloumn[8].strip()]
        self.CsvData.append(d)
 
  #模拟登录并获取页面数据
  def GetPageHtml(self):
    try:
      #模拟登录
      request=urllib2.Request(url=self.LoginUrl,data=self.PostData)
      ResultHtml=self.opener.open(request)
      #开始执行获取页面数据
      while self.PageTotal<=self.Total:
        #动态拼凑所要解析的Url
        m_PageUrl = self.PageUrl % self.PageTotal
        #计算当期第几页
        self.PageTotal = self.PageTotal + 1
        #获取当前解析页面的所有内容
        ResultHtml=self.opener.open(m_PageUrl)
        #解析网页中的内容
        self.GetPageItem(ResultHtml.read())
 
      ####写入Csv文件中
      with open(self.CsvFileName, 'wb') as csvfile:
        spamwriter = csv.writer(csvfile, dialect='excel')
        #设置标题
        spamwriter.writerow(["游戏账号","用户类型","游戏名称","渠道","充值类型","充值金额","返利金额","单号","日期"])
        #将CsvData中的数据循环写入到CsvFileName文件中
        for item in self.CsvData:
          spamwriter.writerow(item)
 
      print "成功导出CSV文件!"
    except Exception,e:
      print "404 error!%s" % e
#实例化类
p=Pyw()
#执行方法
p.GetPageHtml()

导出结果

Python简单爬虫导出CSV文件的实例讲解

以上这篇Python简单爬虫导出CSV文件的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python标准日志模块logging的使用方法
Nov 01 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
Python实现采用进度条实时显示处理进度的方法
Dec 19 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
flask中过滤器的使用详解
Aug 01 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
Python装饰器基础概念与用法详解
Dec 22 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
Python基础知识点 初识Python.md
May 14 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
Python实现的从右到左字符串替换方法示例
Jul 06 #Python
Python用csv写入文件_消除空余行的方法
Jul 06 #Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 #Python
python 读取目录下csv文件并绘制曲线v111的方法
Jul 06 #Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 #Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 #Python
python selenium自动上传有赞单号的操作方法
Jul 05 #Python
You might like
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
在Django的视图中使用数据库查询的方法
2015/07/16 Python
总结python实现父类调用两种方法的不同
2017/01/15 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
厨师岗位职责
2013/11/12 职场文书
通信工程专业毕业生推荐信
2013/12/25 职场文书
小学生优秀评语大全
2014/04/22 职场文书
初三学生评语大全
2014/04/24 职场文书
阳光体育活动总结
2014/04/30 职场文书
小学综合实践活动总结
2014/07/07 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
学生会主席任命书
2015/09/21 职场文书
党员干部学习心得体会
2016/01/23 职场文书
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL