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 相关文章推荐
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
Python实现多线程下载文件的代码实例
Jun 01 Python
python使用post提交数据到远程url的方法
Apr 29 Python
在Python web中实现验证码图片代码分享
Nov 09 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
Python 12306抢火车票脚本
Feb 07 Python
python实现猜单词小游戏
May 22 Python
linux环境下Django的安装配置详解
Jul 22 Python
500行python代码实现飞机大战
Apr 24 Python
Jupyter notebook如何修改平台字体
May 13 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python传递参数方式小结
2015/04/17 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
python实现微信自动回复机器人功能
2019/07/11 Python
Pytorch 实现权重初始化
2019/12/31 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android
如何理解python接口自动化之logging日志模块
2021/06/15 Python
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL