【Python爬虫】Python爬取喜马拉雅,爬虫教程!
以下是一个简单的Python爬虫示例,用于爬取喜马拉雅网站上的音频播放链接。
import requests
from bs4 import BeautifulSoup
import re
# 音频信息类
class AudioInfo:
def __init__(self, title, url):
self.title = title
self.url = url
# 获取音频信息
def get_audio_info(url):
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
audio_list = soup.find_all('a', class_='audio-title')
audio_infos = []
for audio in audio_list:
title = audio.text
audio_url = audio['href']
audio_infos.append(AudioInfo(title, audio_url))
return audio_infos
else:
return []
# 正则表达式提取音频链接
def extract_audio_url(text):
pattern = re.compile(r'play_url:"(.*?)"')
urls = re.findall(pattern, text)
return urls
# 测试函数
def test_get_audio_info(url):
audio_infos = get_audio_info(url)
for info in audio_infos:
print(info.title, info.url)
audio_urls = extract_audio_url(info.url)
for url in audio_urls:
print(url)
# 主函数
def main():
# 喜马拉雅电台分类页面URL
category_url = 'https://www.ximalaya.com/category/500033/'
test_get_audio_info(category_url)
if __name__ == '__main__':
main()
这段代码首先定义了一个AudioInfo
类来存储音频的标题和URL。get_audio_info
函数用于获取指定URL下的所有音频信息,并返回一个AudioInfo
对象列表。extract_audio_url
函数使用正则表达式来提取每个音频播放的实际URL。test_get_audio_info
函数用于测试这些功能,并打印结果。最后,main
函数定义了喜马拉雅电台分类页面的URL,并调用test_get_audio_info
函数来运行爬虫。
注意:由于喜马拉雅有反爬策略,实际运行时可能需要设置合适的请求头、处理登录验证、使用代理等。此代码仅为示例,用于演示基本的爬虫逻辑。
评论已关闭