以酷狗音乐的榜单音乐信息为例,我们要获取源代码中的部分数据:


查看源代码,最后的一部分数据就是我们要获取的数据:


我们可以看到,要获取的数据属于 script 标签中的内容,而且是部分内容,所以这里我们需要先获取指定的script标签中的内容,然后再从其中提取出我们需要的那部分数据,所以在这里我们使用 BeautifulSoup模块 和 正则表达式

首先导入模块

from bs4 import BeautifulSoupimport requestsimport re

获取网页源代码

url = "https://www.kugou.com/yy/rank/home/1-23784.html?from=rank"html = requests.get(url).text

使用BeautifulSoup模块获取指定标签及内容

soup = BeautifulSoup(html,features="lxml")#  获取最后一个 script 标签及其内容script = soup.find_all('script')[-1]

进行到这一步我们输出一下获取到的数据


此时获取到的是最后一个script标签中的所有内容,所以我们还需要进一步提取

使用正则表达式提取我们想要的数据

# 查找符合正则表达式的字符串 此时script变量为bs4格式 我们需要将其转化为字符串格式info = re.findall(r'\[.*\]',str(script))

再次输出我们获取到的数据


除了我们需要的数据,还有两条符合正则表达式的数据也被提取出来了,所以我们只需要使用列表下标的方式获取我们想要的数据就可以了

#  获取列表中下标为1的数据info = re.findall(r'\[.*\]',str(script))[1]

输出看一下


成功提取出我们想要的数据


完整代码

from bs4 import BeautifulSoupimport requestsimport reurl = "https://www.kugou.com/yy/rank/home/1-23784.html?from=rank"html = requests.get(url).text# print(html)soup = BeautifulSoup(html,features="lxml")# 获取最后一个script元素script = soup.find_all('script')[-1]# print(script)# print(type(script))# 查找符合正则表达式的字符串 此时script变量为bs4格式 我们需要将其转化为字符串格式info = re.findall(r'\[.*\]',str(script))[1]print(info)# 替换符合正则表达式的字符串# info = re.sub(r'\[|\]',"",info)# print(type(info))# 分割符合正则表达式的字符串# info = re.split(r'\},\{',info)# print(info)
©著作权归作者所有:来自51CTO博客作者小甜甜?的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Python内置数据库SQLite
  2. python实现数据可视化
  3. python从Excel中读取数据
  4. Oracle连接MongoDB数据库
  5. 如何使用 Nodejs 开发一个 每日备份 MongoDB 数据的工具
  6. Python操作SQL Server(三)数据表查询和fetchall()与fetchone()的
  7. SpringMVC @Value注解无法获取值 报IllegalArgumentException异
  8. 云关系型数据库(Relational Database Service,RDS)
  9. 云数据迁移(Cloud Data Migration,CDM)

随机推荐

  1. Android应用程序签名
  2. Android支付宝接口集成
  3. Android之拍照
  4. Android Studio项目适配Android X(Androi
  5. ViewPager
  6. 有关Android 访问WCF的有关问题
  7. mac 下安装 android apk
  8. Android的消息机制
  9. android二维码
  10. Android 键盘驱动