欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python简单爬虫导出CSV文件的实例讲解

程序员文章站 2022-06-14 17:16:55
流程:模拟登录→获取html页面→正则解析所有符合条件的行→逐一将符合条件的行的所有列存入到csvdata[]临时变量中→写入到csv文件中 核心代码: ##...

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

导出结果

Python简单爬虫导出CSV文件的实例讲解

以上这篇python简单爬虫导出csv文件的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。