通过封装工具类保存爬取的数据,以excel保存

本文介绍了一种从扇贝网抓取英语单词及其中文释义的方法,并详细展示了如何利用Python的requests和lxml库进行网页数据解析,同时提供了将抓取数据保存至Excel的工具类封装代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:使用此工具类,接受的数据一定要为【{},{}】 列表字典

一、扇贝网单词爬取

在这里插入图片描述
获取到的数据,保存到字典

  • item = {}
  • item[‘en_word’] = word
  • item[‘zh_word’] = zh_word_list[i]

代码如下:

import requests
from lxml import etree
from excel_utils.excel_utils import Excel_Utils
def get_content(url):
    '''
    请求url,获取页面tree对象
    :param url:
    :return:
    '''
    headers= {
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',

    }
    respone = requests.get(url,headers= headers)
    #测试--为了确定header请求头是否正确
    # print(respone.text)
    return etree.HTML(respone.text)

def pase_word(tree):
    '''
    解析每页的单词
    :param tree: 改页面的element对象
    :return:
    '''
    en_word_list = tree.xpath('//td[@class="span2"]/strong/text()')
    zh_word_list = tree.xpath('//td[@class="span10"]/text()')
    # print(en  _word_list)
    # print(zh_word_list)
    for i,word in enumerate(en_word_list):
        item = {}
        item['en_word'] = word
        item['zh_word'] = zh_word_list[i]
        # print(item)
        infos.append(item)
def main():

    #1、确定url
    base_url = 'https://www.shanbay.com/wordlist/110521/232414/?page=%s'
    #2、实现分页
    for i in range(1,4):
        tree = get_content(base_url %i)
        #解析
        pase_word(tree)
    #4、保存数据
    Excel_Utils.write_to_excel(infos,'单词.xls') # [{item},{}]
if __name__ == '__main__':
    infos = []
    main()
    #wi

二、封装工具类保存爬取的数据

新建一个包文件,excel_utils.py, 代码如下
在这里插入图片描述

import xlwt
import xlrd
from xlutils.copy import copy


class Excel_Utils:

    @staticmethod
    def write_to_excel(infos, filename, sheetname='sheet1'):
        '''
        写入excel
        :param infos: 写入的数据:[{item},{}]
        :param filename: 文件名
        :param sheetname: sheet名
        :return:
        '''
        # 1、创建工作博
        work_book = xlwt.Workbook(encoding='utf-8')
        # 2、创建一个sheet
        sheet = work_book.add_sheet(sheetname)
        # 3、写标头
        head = list(infos[0].keys())
        print(head)
        for i in range(len(head)):
            sheet.write(0, i, head[i])

        # 4|写内容
        rows = 1
        for item in infos:
            for j in range(len(head)):
                sheet.write(rows, j, item[head[j]])

            rows += 1
        # 5、保存
        work_book.save(filename)
        print('写入成功!')

    @staticmethod
    def append_to_excel(infos, filename, sheetname='sheet1'):
        '''
        追加数据到excel
        :param infos: 【{item},{item}。。。。】
        :param filename:
        :param sheetname:
        :return:
        '''
        # 1、打开excel文件
        work_book = xlrd.open_workbook(filename=filename)
        # 2、获取所有表单的名称
        sheet_names = work_book.sheet_names()
        # 3、通过名字来获取sheet表单
        sheet = work_book.sheet_by_name(sheet_names[0])
        # 4、读取当前行数
        old_rows = sheet.nrows
        # 5、将xlrd的workbook变成xlwt的workbook
        new_work_book = copy(work_book)
        new_sheet = new_work_book.get_sheet(0)
        # 写入
        head = sheet.row_values(0)
        for item in infos:
            for j in range(len(head)):
                new_sheet.write(old_rows, j, item[head[j]])
            old_rows += 1
        new_work_book.save(filename)
        print('追加成功!')

将这个文件夹其放到anaconda lib中就可以直接使用了 ,
在这里插入图片描述
使用的时候,参考第一个代码,导入封装好的工具类,
from excel_utils.excel_utils import Excel_Utils
使用方法
Excel_Utils.write_to_excel(infos,'单词.xls') # [{item},{}]

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值