• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Python爬虫一-----酷狗Top500的数据

武飞扬头像
储祭
帮助1

简介:python爬虫简单入门,利用Requests和BeautifulSoup第三方库爬取酷狗榜单Top500的信息
思路:
(1)爬取的页面内容
学新通
(2)网页版无法手动翻页,所以我们手动将网址上的数字1改为2,就会跳转到第二页,这为我们后面翻页爬取Top500信息有帮助,每页显示22首歌,我们爬取24页,就能将500首歌的信息全部爬取完成。
学新通
(3)我们需要爬取的信息如上图
爬取过程:
1、获得页面信息

import requests

head={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
url="https://www.kugou.com/yy/rank/home/1-8888.html?from=rank"
re=requests.get(url,headers=head)
print(re.text)

通过上面代码我们会获取第一页酷狗Top500的网页信息,如下图所示,将其命名为1.html
学新通
2、解析页面
本次解析页面,我们先建立一个testBs4.py文件,在testBs4.py中的代码如下获得我们想要的信息

from bs4 import BeautifulSoup


file =open("1.html", "rb")
html = file.read()
bs = BeautifulSoup(html,"html.parser")
ranks=bs.select('span.pc_temp_num')
titles=bs.select('div.pc_temp_songlist>ul>li>a.pc_temp_songname')
times=bs.select('span.pc_temp_tips_r>span.pc_temp_time')
for rank,title,time in zip(ranks,titles,times):
    data={
        'rank':rank.get_text().strip(),
        'songname':title.get_text().split('-')[0].strip(),
        'singer':title.get_text().split('-')[1].strip(),
        'songtime':time.get_text().strip()
    }
    print(data)
学新通

最后输出数据以下
学新通
3、整个代码

#@Author:Kingsley
# -*- codeing = utf-8 -*-
#@time :2022/9/22 0022 20:43
#@File: main.py
#@Software: PyCharm

import  requests
from bs4 import BeautifulSoup
import time

head={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}


#解析获取的网页
def get_info(url):
    kg_data=requests.get(url,headers=head)
    bs=BeautifulSoup(kg_data.text,'lxml')
    ranks = bs.select('span.pc_temp_num')
    titles = bs.select('div.pc_temp_songlist>ul>li>a.pc_temp_songname')
    times = bs.select('span.pc_temp_tips_r>span.pc_temp_time')
    for rank, title, time in zip(ranks, titles, times):
        data = {
            'rank': rank.get_text().strip(),
            'songname': title.get_text().split('-')[0].strip(),
            'singer': title.get_text().split('-')[1].strip(),
            'songtime': time.get_text().strip()
        }
        print(data)

if __name__=='__main__':
    urls= ["https://www.kugou.com/yy/rank/home/{}-8888.html?from=rank".format((str(i))) for i in range(1,25) ]
    for url in urls:
        get_info(url)
    time.sleep(2)
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhabehb
系列文章
更多 icon
同类精品
更多 icon
继续加载