python豆瓣音乐网站数据爬取处理2.6.2

import requests
from lxml import etree
import xlwt


# 定义空列表
musicList = []

# 将数据写入文件
def save_file():
    workbook = xlwt.Workbook(encoding='utf-8')  # 创建一个Excel文件
    sheet = workbook.add_sheet('Music List')    # 在文件中创建一个名为’Music List’的表格

    headers = ['歌曲名', '表演者', '发行时间', '流派', '评分'] # 表格的表头
    for i, header in enumerate(headers):                 # 遍历表头列表。enumerate组成索引序列,同时获得索引和值
        sheet.write(0, i, header)                        # 在第一行写入表头

    for i, info in enumerate(musicList):                # 遍历音乐信息列表
        sheet.write(i+1, 0, info['title'])              # 在第i+1行第1列写入歌曲名
        sheet.write(i+1, 1, info['performer'])          # 在第i+1行第2列写入表演者
        sheet.write(i+1, 2, info['time'])               # 在第i+1行第3列写入发行时间
        sheet.write(i+1, 3, info['type'])               # 在第i+1行第4列写入流派
        sheet.write(i+1, 4, info['score'])              # 在第i+1行第5列写入评分

    workbook.save('musicList.xls')                      # 保存Excel文件为'musicList.xls'

# 获取数据存入musicList列表
def gain_data(urllist):
    for url in urllist:
        response = requests.get(url=url) #发起请求
        response.encoding=response.apparent_encoding#修正编码 
        # 响应正常
        if response.status_code == 200:
            html = response.text                        # 获取响应的HTML内容。response.text返回的类型str
            # 使用lxml库解析HTML,etree.HTML()用来把得到的HTML对象,转变成属于lxml.etree._Element的类对象,作为_Element对象,可以使用getparent()、remove()、xpath()等方法
            tree = etree.HTML(html)                     
            music_list = tree.xpath('//div[@class="pl2"]')  # 使用XPath定位音乐信息所在的节点
            # 遍历每一个music_list:
            for music in music_list:                    # 遍历每一个音乐信息节点
                title = music.xpath('.//a/text()')[0].strip()  # 使用XPath获取歌曲名,并去除首尾空格
                performer_info = music.xpath('.//p[@class="pl"]/text()')[0].strip().split('/')   # 使用XPat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值