服务器之家

服务器之家 > 正文

使用pandas生成/读取csv文件的方法实例

时间:2021-12-11 11:45     来源/作者:滑冰选手库里

前言

csv是我接触的比较早的一种文件,比较好的是这种文件既能够以电子表格的形式查看又能够以文本的形式查看。

先引入pandas库

import pandas as pd

方法一:

1、我构造了一个cont_list,结构为列表嵌套字典,字典是每一个样本,类似于我们爬虫爬下来的数据的结构

2、利用pd.dataframe方法先将数据转换成一个二维结构数据,如下方打印的内容所示,cloumns指定列表,列表必须是列表

3、to_csv方法可以直接保存csv文件,index=false表示csv文件不加行序号

使用pandas生成/读取csv文件的方法实例

保存csv结果

使用pandas生成/读取csv文件的方法实例

应用到我们的爬虫代码,传入的con_list就是[{},{},{}****]这样的额数据结构,encoding="utf_8_sig",encoding="gb18030”,我这边解决中文编码问题

使用pandas生成/读取csv文件的方法实例

是不是很方便就,2行代码即可搞定保存,是不是比上次讲的方法简单好多,其实很多方法,还有python的优秀库,都使python这门语言在数据分析领域有极大的优势

使用pandas生成/读取csv文件的方法实例

方法二:

流程:模拟登录→获取html页面→正则解析所有符合条件的行→逐一将符合条件的行的所有列存入到csvdata[]临时变量中→写入到csv文件中

核心代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
####写入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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# 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()

导出结果

使用pandas生成/读取csv文件的方法实例

读取csv

?
1
2
3
4
5
import pandas as pd
 
data = pd.read_table('地址', sep=",")['网址'].values
 
print(data[1])

总结

到此这篇关于使用pandas生成/读取csv文件的文章就介绍到这了,更多相关pandas生成读取csv文件内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_40096730/article/details/81255136

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部