流程:模拟登录→获取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文件的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!