流程:模拟登录→获取Html页面→正则解析所有符合条件的行→逐一将符合条件的行的所有列存入到CSVData[]临时变量中→写入到CSV文件中
核心代码:
1
2
3
4
5
6
7
8
|
####写入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)
|
完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# 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)
except Exception,e:
print "404 error!%s" % e
#实例化类
p = Pyw()
#执行方法
p.GetPageHtml()
|
导出结果
以上这篇Python简单爬虫导出CSV文件的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u013533810/article/details/54849230