머리말
안녕하세요! 안녕하세요 여러분 마왕입니다~
환경 소개
- 파이썬 3.8
- 파이 참
모듈 사용
- 요청 >>> 데이터 요청 모듈 타사 모듈 pip 설치 요청
- re >>> 정규식 구문 분석 데이터 내장 모듈을 설치할 필요가 없습니다.
win + R Enter cmd 설치 명령을 입력하십시오 pip install 모듈 이름이 널리 사용되는 경우 국내 미러 소스를 전환하기 위해 네트워크 연결 시간이 초과되었기 때문일 수 있습니다
크롤러 케이스를 구현하고 싶다면 어떻게 하시겠습니까?
분석: 우리가 원하는 데이터의 출처 분석… 오디오 URL
개발자 도구를 통한 패킷 캡처 분석
- 오디오 URL 주소 찾기
- 오디오 데이터 패킷 찾기
이 데이터 패킷에는 원하는 오디오 URL 주소가 포함되어 있습니다. - 데이터 패킷 요청 매개변수의 변경 규칙을 비교하십시오.각 오디오에는 해당 오디오 ID가 있습니다.
- ID 소스를 쿼리하기 위해 개발자 도구를 통해 ID를 검색... 웹페이지의 소스 코드에는 우리가 원하는 오디오 ID가 포함되어 있습니다
코드를 작성하는 목적은 오디오 URL >>> 오디오 데이터 패킷 >>> 오디오 ID를 가져오는 것입니다.
코드 구현 단계: 크롤러는 데이터를 얻기 위해 url 주소로 요청을 보내는 브라우저를 시뮬레이션합니다.
1. 오디오 ID와 오디오 타이틀을 얻기 위한 첫 번째 요청
- 요청 보내기, 오디오 카탈로그 페이지 요청 보내기
- 데이터 가져오기, 응답 데이터를 반환하도록 서버 가져오기
- 데이터를 구문 분석하고 원하는 오디오 ID와 오디오 제목을 추출합니다.
2. 오디오 URL 주소를 얻기 위한 두 번째 요청
- 요청 보내기, 오디오 패킷의 경우 요청 보내기
- 데이터 가져오기, 응답 데이터를 반환하도록 서버 가져오기
- 데이터 구문 분석, 오디오 URL 주소 추출
3. 세 번째 요청은 오디오 바이너리 데이터를 얻기 위해 저장하기 위해
- 데이터를 저장
암호
# import requests # 数据请求模块 第三方模块 pip install requests
# """
# 发送请求
# 对于哪一个url地址发送请求, 发送什么样请求
#
# 爬虫发送请求你可以看做打电话的一个过程
# import requests 工具 手机
# url 电话号码
# headers 信号
# get 打电话的方式 座机是需要加区号 长沙0731
# <Response [200]> 打电话通了 200 嘟嘟嘟的声音 404 您所拨打电话是空号
# """
# for page in range(2, 17):
# url = f'https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=8625924&pageNum={
page}&sort=0' # 唯一资源定位符
# # 模拟浏览器 headers请求头 字典数据类型, 构建成键值对形式
# headers = {
# 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
# }
# response = requests.get(url=url, headers=headers)
# # print(response.text) # <Response [200]> 响应对象 200 状态码表示请求成功 404 网址不对
# # re.findall() 调用re模块里面findall方法 从那些数据里面, 获取什么样的数据内容 \d+ 匹配一个数字或者多个数字
# audio_info = response.json()['data']['tracks']
# # print(audio_info)
# for index in audio_info:
# # 字符串格式化方法 {
} 占位符
# link = f'https://www.ximalaya.com/revision/play/v1/audio?id={
index["trackId"]}&ptype=1'
# # print(link)
# # 获取响应对象json字典数据
# json_data = requests.get(url=link, headers=headers).json()
# audio_url = json_data['data']['src']
# """
# response.text 数据类型是字符串 响应对象文本数据
# response.json() 数据类型是字典 响应对象json字典数据
# response.content 二进制数据内容
# ctrl + alt + L 格式化代码 和网易云收藏按键 以及QQ 锁定按键冲突
# """
# audio_content = requests.get(url=audio_url, headers=headers).content
# with open('audio\\' + index['title'] + '.mp3', mode='wb') as f:
# f.write(audio_content)
# print(link, index['title'])
def get_num():
lis = []
for a in range(10):
for b in range(10):
for c in range(10):
for d in range(10):
num = f'{
a}{
b}{
c}{
d}'
lis.append(num)
return lis
print(get_num())
string = '1111122211'
string = string.replace('2', '3')
print(string)
발문
자, 제 글은 여기서 마치겠습니다!
더 많은 제안이나 질문이 있으면 언제든지 댓글이나 개인 메시지를 보내주세요! 같이 힘내요 (ง •_•)ง
블로거가 마음에 들면 팔로우하거나 내 기사에 좋아요와 댓글을 남겨주세요! ! !