流程:模拟登录→获取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)

]*>(.*?)")

#正则解析出td

self.TdExp = re.compile("(?isu)

]*>(.*?)")

#创建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简单爬虫导出CSV文件的实例讲解相关推荐

  1. python双y轴的折线图_python matplotlib实现双Y轴的实例

    python matplotlib实现双Y轴的实例 如下所示: import matplotlib.pyplot as plt import numpy as np x = np.arange(0., ...

  2. python语言编写一个生成九宫格图片的代码_python简单实现9宫格图片实例

    在日常生活中我们经常在朋友圈看到有人发九宫格图片,其实质就是将一张图片切成九份,然后在微信中一起发这九张图. 那么我们如何自己动手实现呢? 说到切图Python 就可以实现,主要用到的 Python ...

  3. Python自动生成代码 - 通过tkinter图形化操作生成代码框架

    Python自动生成代码 - 通过tkinter图形化操作生成代码框架 背景 脚本代码 Demo_CodeGenerator.py display.py FileHandler.py: 脚本运行结果: ...

  4. ajax 导出文件给 文件重新命名_Tanner LEdit 05 | 导出GDSII文件

    「 这是Tanner L-Edit系列的第 5 篇 」本节内容 · 导览 导出GDSII命令介绍 导出文件的演示操作 需要注意的常见问题接着上一节:导入GDSII文件这一节讲如何导出GDSII文件01 ...

  5. python简易版实例_Python3之简单搭建自带服务器的实例讲解

    WEB开发,我们先从搭建一个简单的服务器开始,Python自带服务模块,且python3相比于python2有很大不同, 在Python2.6版本里,/usr/bin/lib/python2.6/ 目 ...

  6. python识别手写文字_Python3实现简单可学习的手写体识别(实例讲解)

    1.前言 版本:Python3.6.1 + PyQt5 + SQL Server 2012 以前一直觉得,机器学习.手写体识别这种程序都是很高大上很难的,直到偶然看到了这个视频,听了老师讲的思路后,瞬 ...

  7. 使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件)

    使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件) 使用beep播放mp3文件(10num) 使用go语言GUI库fyne实现音乐播放器 要是想使用go语言实现播放mp3需要借助be ...

  8. python的scrapy爬虫模块间进行传参_Python | Scrapy 爬虫过程问题解决(持续更新...)...

    1.使用python的re模块过滤html标签 In [1]: response.xpath("//div[@class='zx-dis_content']/p").extract ...

  9. python合并两个列表并去重_python合并多个txt文件

    python合并多个txt文件 #合并一个文件夹下的多个txt文件 #coding=utf-8 import os #获取目标文件夹的路径 filedir = os.getcwd()+'\\数据' # ...

  10. Python之——生成动态路由轨迹图

    一.scapy简介与安装 scapy( http://www.secdev.org/projects/scapy/)是一个强大的交互式数据包处理程序,它能够对数据包进行伪造或解包,包括发送数据包.包嗅 ...

最新文章

  1. C# vs C++ 全局照明渲染性能比试
  2. java求最优解库,IPOPT在第二次求解时找到最优解
  3. springboot pom文件添加mysql组件_SpringBoot整合mybatis-plus+druid组件,实现增删改查
  4. 配置php7开发环境,Windows7系统环境安装配置PHP开发环境
  5. preview一直不显示,无法和代码同步变化
  6. MCU程序布局----优化升级方式
  7. 伊甸园日历游戏 飘飘乎居士拯救MM(tyvj 1968 1140)
  8. 美国留学访学(访问学者)必备信用卡
  9. java 调用弗雷_JAVA 学习笔记
  10. 2021年质量员-设备方向-通用基础(质量员)考试总结及质量员-设备方向-通用基础(质量员)模拟考试题库
  11. ENFP型人格的特征分析(mbti性格测试)
  12. android fstrim命令,满血复活:安卓4.3为所有Nexus带来TRIM
  13. 【公平锁和非公平锁有什么区别?】
  14. 宽带提速后如何恰如其分的选择路由器?
  15. 陕西省建筑标准规范合集
  16. 保姆级 Java 后端线上问题排查常用命令收藏
  17. Java生成PDF文件并使用指定的模板,带图片
  18. SAP系统权限配置一
  19. java开发一个连连看小游戏
  20. bos 获取数据库连接_EAS-BOS表头-分录多表开发高级教程

热门文章

  1. 1018. Binary Prefix Divisible By 5可被 5 整除的二进制前缀
  2. [转自华尔街的强帖]怎样才能嫁给有钱人
  3. 如何让git小乌龟工具TortoiseGit记住你的账号密码
  4. kafka入门:简介、使用场景、设计原理
  5. Android上使用MP3格式录制声音
  6. centos 6.5 找回root密码的方法
  7. 输入法弹出,屏幕自动适应
  8. linux fedora frebsd centos linux as 安装出错
  9. aud删除 oracle_Oracle 11g如何清理数据库的历史日志详解
  10. oracle表修改语句怎么写,Oracle修改表结构语句