【python爬虫】python爬虫demo

本文介绍了一个使用Python的requests库和BeautifulSoup库抓取酷狗音乐排行榜信息的简易示例。通过该示例,可以获取音乐的歌名、歌手、时长及链接等数据。

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

我在入门python爬虫的时候,在网上找demo,找了好久都找不到,好不容易找到了一个,但是又跑不起来。 我把一个简易的demo贴出来。

使用 BeautifulSoup 抓取 酷狗音乐TOP500 第1页到第9页的音乐歌名、歌手、时长、链接

1、需要先安装 requests 库和BeautifulSoup 库 ,自行百度
2、Demo
import requests
from bs4 import BeautifulSoup
import time
#import re

# headers 用chrom浏览器——F12——切换到network 栏,刷新下要访问的目标网站,就能找到`User-Agent` 复制下来就好。用于伪装浏览器,便于爬虫稳定性
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '
                 '(KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}

def get_info(url):
    wb_data = requests.get(url, headers = headers) #get方法中加入请求头
    soup = BeautifulSoup(wb_data.text, 'html.parser') #对返回的结果进行解析
    # BeautifulSoup的select() 函数的使用见我的另一篇博文http://blog.csdn.net/la6nf/article/details/79338920
    # nth-child 在python中运行会报错,需改为 nth-of-type
    ranks = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > span.pc_temp_num > strong')
    links = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > a')
    times = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > span.pc_temp_tips_r > span')
    #time2 = re.findall('<span class="pc_temp_time">(.*?)</span>', wb_data.text, re.S)

    # get_text()从html标签中提取文本,strip()去除字符串两端的空格
    for rank, link, time,  in zip(ranks, links, times):
        data = {
            'rank': rank.get_text().strip(),
            'singer': link.get_text().split('-')[0].strip(),
            'song': link.get_text().split('-')[1].strip(),
            'time': time.get_text().strip(),
            'link': link.get('href')
        }
        print (data)

if __name__ == '__main__':  # 相当于java中的main方法
    urls = ['http://www.kugou.com/yy/rank/home/{}-8888.html?from=rank'.format (num) for num in range(1,10)]
    for url in urls:
        get_info(url)
        #睡眠2秒
        time.sleep(2)

### 使用Python编写爬虫程序抓取酷狗音乐TOP500歌曲列表数据 为了实现这一目标,可以采用 `Selenium` 和 `BeautifulSoup` 的组合来完成任务。以下是具体的实现方法: #### 1. 安装必要的库 在开始之前,需安装所需的 Python 库: ```bash pip install selenium beautifulsoup4 requests ``` #### 2. 设置 Chrome 浏览器选项 通过 Selenium 控制无头浏览器访问酷狗音乐网站并加载动态内容。配置如下: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless") # 配置为无头模式 driver = webdriver.Chrome(options=chrome_options) ``` 此部分代码用于初始化一个无头浏览器实例[^1]。 #### 3. 构造 URL 并遍历页面 根据引用描述,酷狗音乐 TOP500 列表分为多个子页面,每页显示 22 首歌曲,总共需要遍历 23 个页面。可以通过字符串格式化构造各页面的 URL 地址: ```python base_url = "https://www.kugou.com/yy/rank/home/{}-8888.html" for page_num in range(1, 24): # 页面编号从1到23 url = base_url.format(page_num) driver.get(url) html_content = driver.page_source ``` 上述代码实现了对每个页面的逐一访问,并获取其 HTML 源码[^2]。 #### 4. 解析 HTML 数据 利用 BeautifulSoup 对 HTML 进行解析,提取所需的信息(如歌曲名、歌手名等)。示例如下: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(html_content, 'html.parser') song_list = soup.find_all('li', class_='pc_temp_songlist') # 查找包含歌曲信息的部分 songs_info = [] for song_item in song_list: title = song_item.find('span', class_='pc_temp_songname').text.strip() # 歌曲名称 singer = song_item.find('span', class_='pc_temp_singer').text.strip() # 歌手名称 songs_info.append({'title': title, 'singer': singer}) ``` 这里展示了如何定位特定标签及其属性以提取歌曲的相关字段。 #### 5. 存储结果至文件 最后可将收集到的数据保存成 JSON 或 CSV 文件以便后续分析处理: ```python import json with open('kugou_top500.json', 'w', encoding='utf-8') as f: json.dump(songs_info, f, ensure_ascii=False, indent=4) print("数据已成功写入 kugou_top500.json") ``` 以上即完成了整个流程的设计与实施说明。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值