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实现的扫雷游戏实例代码
Aug 01 Python
Python中使用hashlib模块处理算法的教程
Apr 28 Python
Python实现带百分比的进度条
Jun 28 Python
Python简单定义与使用二叉树示例
May 11 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
python selenium xpath定位操作
Sep 01 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 11 Python
Python利用capstone实现反汇编
Apr 06 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
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
js下将字符串当函数执行的方法
2011/07/13 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
script标签属性用type还是language
2015/01/21 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
python获取元素在数组中索引号的方法
2015/07/15 Python
python实现学生管理系统
2018/01/11 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
个人委托书
2014/07/31 职场文书
八一建军节演讲稿
2014/09/10 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
销售2014年度工作总结
2014/12/08 职场文书
评先进个人材料
2014/12/29 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
外科护士长工作总结
2015/08/12 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis