注意:使用此工具类,接受的数据一定要为【{},{}】 列表字典
一、扇贝网单词爬取
获取到的数据,保存到字典
- 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},{}]
运行结果