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条件和循环的使用方法
Nov 01 Python
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
python机器学习之神经网络(三)
Dec 20 Python
Python处理中文标点符号大集合
May 14 Python
python随机数分布random均匀分布实例
Nov 27 Python
使用python远程操作linux过程解析
Dec 04 Python
使用python模拟高斯分布例子
Dec 09 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
python中print格式化输出的问题
Apr 16 Python
浅谈Python项目的服务器部署
Apr 25 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
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
php数组去重实例及分析
2013/11/26 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
javascript模块化简单解析
2016/04/07 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
pytyon 带有重复的全排列
2013/08/13 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
python中如何设置代码自动提示
2020/07/15 Python
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
30岁生日感言
2014/01/25 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
师范生自我鉴定
2014/03/20 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
初三毕业评语
2014/12/26 职场文书
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL