python爬虫爬取酷狗top5002——xlwt库的使用
前言
上一篇中我使用了requests库与Beautiful库实现了酷狗top500的信息爬取,并将爬取的数据保存到本地的txt文件中,这篇我们将使用xlwt库来将python与Excel对接
xlwt库
xlwt库安装
- 使用pip安装
pip install xlwt
- pycharm中安装
点击FIle->Settings->Project Interpreter,然后点击右上方的加号,搜索xlwt,选中Install Package,显示安装成功,即可使用xlwt库
xlwt基本使用
import xlwt # 引用xlwt库
book = xlwt.Workbook(encoding="utf-8") # 将数据写入Excel的库文件
sheet = book.add_sheet("Sheet1") # 创建工作簿
sheet.write(0, 0, "python") # 创建工作表
sheet.write(1, 1, "love") # 在相对于的单元格写入数据
book.save("text.xls") # 保存文件
Excel
Excel创建的文件扩展为xls,xlsx,我们书写文件的路径时,一定要以这两种后缀命名
完整代码
import requests
import agent # 调用agent模块(自己创建的模块)
from bs4 import BeautifulSoup # 引用BeautifulSoup库中的bs4函数
import time
import xlwtdef spider(url, data, count): # 文件爬取try:r = requests.get(url, headers=agent.getheaders(), timeout=10) # 发出请求,设置代理,与超时时间soup = BeautifulSoup(r.text, "html.parser")ranks = soup.select("span.pc_temp_num")titles = soup.select("div.pc_temp_songlist>ul>li>a") # 注意获取到的内容是以列表的形式times = soup.select("span.pc_temp_tips_r>span")for rank_s, title_s, time_s in zip(ranks, titles, times):data.append([])count += 1data[count].append(rank_s.get_text().strip())data[count].append(title_s.get_text().split("-")[0])data[count].append(title_s.get_text().split("-")[1])data[count].append(time_s.get_text().strip())print("排名:{}\t歌手:{}\t歌曲:{}\t时长:{}\t".format(data[count][0], data[count][1], data[count][2], data[count][3]))#time.sleep(1) # 设置睡眠时间,限制爬取网站数据速率,休眠一秒except():print("爬取失败")def save(data): # 文件存储try:book = xlwt.Workbook(encoding="utf-8") # 设置格式为utf-8,创建工作薄sheet = book.add_sheet("Sheet1") # 创建工作表titles = ['排名', '歌手', '歌曲', '时长']for t in range(len(titles)):sheet.write(0, t, titles[t])i = 1for x in data:j = 0for y in x:sheet.write(i, j, y)j += 1i += 1book.save("text.xls") # 保存文件except():print("Data Error")def main():urls = ["https://www.kugou.com/yy/rank/home/{}-8888.html?from=rank".format(str(i)) for i in range(1, 24)] #循环创建地址datas = []count = -1for url in urls:spider(url, datas, count)count += 22save(datas)if __name__ == "__main__":main()
代码主体还是第一篇文章的内容,只是定义的save函数有了变化
save(data): # 文件存储try:book = xlwt.Workbook(encoding="utf-8") # 设置格式为utf-8,创建工作薄sheet = book.add_sheet("Sheet1") # 创建工作表titles = ['排名', '歌手', '歌曲', '时长']for t in range(len(titles)):sheet.write(0, t, titles[t])i = 1for x in data:j = 0for y in x:sheet.write(i, j, y)j += 1i += 1book.save("text.xls") # 保存文件
函数开始按照基本操作创建了工作薄与工作表,接着我们创建一个列表,列表中的元素全部为字符串,分别为“排名,歌手,歌曲,时长”,将列表的元素循环写入工作表中,这里用了“len”函数统计列表的长度。write有三个参数:行,列,写入数据,下标从0开始。
接着我们开始循环写入具体的数据,在spider函数中,我们将数据存放到一个二维列表中,二维列表就是列表中的每一个元素都是一个列表,对应一首歌的全部信息,两个for循环,将所有信息存放到“test.xls”文件中,注意下标,数据重复放入一个位置,会出现以下报错信息:
Exception: Attempt to overwrite cell: sheetname=‘Sheet1’ rowx=0 colx=0
执行代码
最后所有的信息按照我们的意愿存储在表中,数据也变得更容易操作。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
