Python爬虫

您所在的位置:网站首页 来一首酷狗音乐的说说句子简短 Python爬虫

Python爬虫

2024-07-10 07:54:33| 来源: 网络整理| 查看: 265

一、爬取的页面思路分析 1.首先我们在浏览器中打开的链接 https://www.kugou.com/yy/rank/home/1-8888.html?from=rank 2.点击F12键或者鼠标右键检查键,我们会看到如下的界面:

在这里插入图片描述

3.点击圆圈里面的键,放到歌曲的名称上面,直接定位到歌曲名称所在的源代码中

在这里插入图片描述

4.我们对于源代码进行分析,可以看到歌曲的名称存放在a标签下,它的父标签是ul标签,之后再往上分析,可以看到ul的父标签为div标签,属性为class,值为pc_temp_songlist

在这里插入图片描述

5.不同方法的不同选择方法

5.1 lxml(xpath) :小编的观点为选择获取信息的路径

/ :如果在最前面代表从给根节点开始选取,否则为某个节点的子节点 // :从全局节点随机选择节点 @ :选取某个节点的属性 [] :标签里面的信息 text() :标签下的文本信息 #歌曲信息获取 //div/ul/li/a[@class="pc_temp_songname"]/text()

5.2 BeautifulSoup(findall):小编的观点为在获取到的源代码中查找关键信息

.findall('获取的标签名称',‘属性(属性加属性值)’) 歌曲信息获取如下: .find_all('a', class_="pc_temp_songname")

5.3 re:定义为文本的高级匹配模式,提供搜索,替换等功能。其本质是由一系列字符和特殊符号构成的字串,这个字串即正则表达式

#re库涉及到许多的知识点,在这里小编仅仅分析下面的正则表达式 r'.*?(.*?)' r'' 表示原生字符串 . 匹配除换行外的任意一个字符 * 匹配前面的字符出现0次或多次 ? 为了让匹配重复的元字符尽可能少的向后匹配内容,在匹配重复元字符后加 ‘?’ 号即可 二、代码 lxml库和xpath import requests from lxml import etree from fake_useragent import UserAgent #引入酷狗音乐的排行榜的url url = "https://www.kugou.com/yy/rank/home/1-8888.html?from=rank" #构造伪装的头部而不必使用自己电脑的User-Agent headers = { "User-Agent":UserAgent().random } #使用requsets库发送请求并返回response对象 response = requests.get(url,headers=headers) #指定编码为‘utf-8’ response.encoding='utf-8' #调用HTML类对HTML文本进行初始化,构造XPath解析对象trees trees = etree.HTML(response.text) #使用xpath方法获取里面的排名,歌曲信息和时长 ranks = trees.xpath("//div/ul/li/@data-index") songnames = trees.xpath('//div/ul/li/a[@class="pc_temp_songname"]/text()') songtimes = trees.xpath('//div/ul/li/span/span[@class="pc_temp_time"]/text()') #定义一个列表 list = [] #zip函数以可迭代对象为输入参数,将可迭代对象里元素分别取出再组合成一个个元组,返回一个列表 for i in zip(ranks,songnames,songtimes): rank,songname,songtime = i data = { "排行":int(rank)+1,#源代码中因为排名前三被加粗,直接调用了一个属性值但是它是从零开始 "歌曲": songname, "播放时长": songtime.replace("\t","").replace("\n","") } list.append(data) print(list)

#####bs4库和BeautifulSoup

import requests from fake_useragent import UserAgent from bs4 import BeautifulSoup url = "https://www.kugou.com/yy/rank/home/1-8888.html?from=rank" headers = { "User-Agent":UserAgent().random } response = requests.get(url, headers=headers) #获取到的响应解码为“utf-8” text = response.content.decode('utf-8') #创建一个soup对象(使用的解析器为lxml) soup = BeautifulSoup(text, 'lxml') #使用find_all方法来查询节点 songnames = soup.find_all('a', class_="pc_temp_songname") songtimes = soup.find_all('span',class_='pc_temp_time') #定义一个列表 list = [] #排名 count = 0 for i in zip(songnames,songtimes): songname,songtime = i count +=1 data = { "排行":count, "歌曲": songname.string, "播放时长": songtime.string.replace("\t","").replace("\n","") } list.append(data) print(list)

#####re库

import requests from fake_useragent import UserAgent import re url = "https://www.kugou.com/yy/rank/home/1-8888.html?from=rank" headers = { "User-Agent": UserAgent().random } response = requests.get(url, headers=headers) response.content.decode("utf-8") text = response.text #使用re.findall匹配字符串 songnames = re.findall(r'.*?(.*?)', text, re.S) songtimes = re.findall(r'(.*?)', text, re.S) #定义一个列表 list = [] #排名 count = 0 for i in zip(songnames,songtimes): songname,songtime = i count +=1 data = { "排行":count, "歌曲": songname, "播放时长": songtime.replace("\t","").replace("\n","") } list.append(data) print(list) 三、运行结果

在这里插入图片描述 使用上面的三种方法,我们都可以看到结果是列表格式,里面存放的是多个字典

以上就是全部的内容,感谢你读到这里,如果在实验中出现问题,记得给我留言哟,如有错误的地方也希望你们提出来,我们一起解决!!!


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭