python爬虫存储excel表!

前段时间老板给了一个任务是让爬取百度搜索页内的url、时间和标题并存储到excel表内,获取内容很简单,但是存储到excel表的时候被难倒了。因为自己之前并没有做过,当时第一想法是先存储到数据库中,然后用pandas导出来并以csv的格式存储,但是失败了,然后就想直接存txt格式,自己在手动改,但是数据量太大也放弃了。最后知道python有个函数,是专门用来存储成excel表的内容,最后也成功了,但是还有个问题没有解决,就是因为网页分页的原因,导致每次只能写入一页,如果直接写入第二页,会覆盖第一页的内容,最后自己也是通过做循环,写了几百个excel表(很笨)。后来查看资料,才发现可以通过每次自增一个excel列,就可以了。

附上代码!

import requests
from lxml import etree
import json,re
import xlwt
from urllib import request
def get():
    headers={
        'User-Agent':'Mozilla / 5.0(Windows NT 10.0; WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 69.0.3497.100Safari / 537.36',
        'Cookie':'CnlIds = 152223698257775188;UM_distinctid = 1661894b409436 - 06cfa416eee02b - 36664c08 - 100200 - 1661894b40af6;__auc = 1e491ce3166e3357e36fa846ce7; Hm_lvt_c378c4854ec370c1c8438f72e19b7170 = 1545875563, 1545881702, 1545881723, 1546502118',
        'Accept':'text / html, application / xhtml + xml, application / xml;q = 0.9, image / webp, image / apng, * / *;q = 0.8',
        'Accept - Encoding': 'gzip, deflate',
        'Accept - Language': 'zh - CN, zh; q = 0.9',
        'Cache - Control': 'max - age = 0',
        'Connection': 'keep - alive',
        'Host': 'so.cnfol.com',
        'Upgrade - Insecure - Requests':'1'
    }
    for  i in range(1,76):
    url='http://so.cnfol.com/cse/search?q=汉能&p='+str(i)+'&s=12596448179979580087&srt=def&nsid=1'
    res=requests.get(url,headers=headers)
    res.encoding = 'utf-8'
    Html=res.text
    #html = etree.HTML(html)
    html = etree.HTML(Html)
    url=html.xpath('//h3//@href')
    tit=html.xpath('//h3//text()')
    s=''
    for i in tit:
        s=s+i
        s=s.split('_')[0]
    date=html.xpath('//span//text()')
    for j in date:
        da=re.findall(r'\d{4}-\d{1,2}-\d{1,2}',j)
        if da!=[]:
            for i in da:
                item = {
                    'url': url,
                    'title': s,
                    'date': i,
                        }
                lst=[]
                lst.append(item)
                testXlwt('jjj.xlsx', lst)
                return lst
def testXlwt(file = '0.xlsx', list = []):
    book = xlwt.Workbook() #创建一个Excel
    sheet1 = book.add_sheet('first') #在其中创建一个名为first的sheet
    i = 0 #行序号
    for app in list : #遍历list每一行
        j = 0 #列序号
        try:
            for x in app : #遍历该行中的每个内容(也就是每一列的)

                sheet1.write(i, j, x) #在新sheet中的第i行第j列写入读取到的x值
                j = j + 1  # 列号递增
        except:
            continue
        finally:
            i = i+1 #行号递增

    book.save(file) #创建保存文件

因为工作中主要是使用pyspider框架,但是我到今天才知道,pyspider框架的webui页面的result内可以直接下载result为csv格式,这样就不用考虑如何将代码存成excel格式的问题了,直接获取并return data后就可以了!还是自己太笨了!!!

step1:

step2:

 

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值