python笔记:yield函数 以及 xlsxwriter库保存数据的方法

yield函数

个人使用的主要目的是,让获取到的每一行数据都保存到文件中

yield的优点:节约内存,能够一行一行的录入数据
将获取到的数据,一行一行的返回

   
    for i in items:#返回的数据设置
        number = i.group('number')
        title = i.group('title')
        yield{
            'mumber':number,
            'title':title
        }
a = 0#调用yield返回的数据
    for i in message:
        worksheet.write(a,0,i['mumber'])
        worksheet.write(a,1,i['title'])
        a = a + 1

xlsxwriter库

简单好上手,我的常用命令

 	# 创建名为微博的表格
    workbook = xlsxwriter.Workbook('微博.xlsx')
    # 在创建好的表格中指定一个工作表 - sheet
    worksheet = workbook.add_worksheet('排行榜') 
    #写入数据:第a行 ,第0列 ,保存的数据
    worksheet.write(a,0,i['mumber'])
    workbook.close()#关闭文件

完整代码

#@Time:2021/7/22 22:04
#@Author: xsir161
import requests,re
import xlsxwriter,os
#微博热搜爬取
def main():
    url = 'https://s.weibo.com/top/summary'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
    }
    response = requests.get(url,headers = headers).text

    rule_1 = re.compile(r'icon-top.*?target="_blank">(?P<title>.*?)</a', re.S)
    rule_2 = re.compile(r'class="".*?td-01 ranktop">(?P<number>.*?)<.*?target="_blank">(?P<title>.*?)</a',re.S)

    top = rule_1.search(response).group('title')
    items = rule_2.finditer(response)
    for i in items:
        number = i.group('number')
        title = i.group('title')
        yield{
            'mumber':number,
            'title':title
        }

#微博信息爬取
def writer(message):
    if os.path.exists('微博.xlsx'):
        os.remove('微博.xlsx')

    # 创建名为微博的表格
    workbook = xlsxwriter.Workbook('微博.xlsx')
    # 在创建好的表格中指定一个工作表 - sheet
    worksheet = workbook.add_worksheet('排行榜')


    #在工作表中写入数据
    a = 0
    for i in message:
        worksheet.write(a,0,i['mumber'])
        worksheet.write(a,1,i['title'])
        a = a + 1
    workbook.close()

if __name__ == '__main__':
    g = main()
    writer(g)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

干瘪的兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值