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