Python3은 NetEase Cloud Music의 인기 댓글 분석을 캡처하기 위해 크롤러를 구현합니다(그림).
이 글에서는 NetEase Cloud 음악의 뜨거운 리뷰를 포착하기 위해 Python3 실용적인 크롤러에 대한 관련 정보를 주로 소개합니다. 이 글은 샘플 코드를 통해 매우 자세하게 소개합니다. 공부나 업무에 필요한 모든 사람에게 확실한 참고 학습 가치가 있습니다. 아래 에디터와 함께 배워보세요.
머리말
저는 이제 막 Python 크롤러를 시작했고, 반달 정도 Python을 작성하지 않아서 잊어버릴 뻔했습니다. 그래서 간단한 크롤러를 작성하여 연습해 보기로 했습니다. NetEase Cloud Music의 가장 큰 특징은 정확한 노래 추천과 독특한 사용자 리뷰라고 느꼈기 때문에 NetEase Cloud Music 인기곡 목록에서 뜨거운 리뷰를 포착하기 위해 이 방법을 작성했습니다. . 파충류. 저도 이제 막 크롤링을 시작하게 되었는데, 궁금한 점이나 의견이 있으시면 언제든지 올려주세요.
더 이상 헛소리는 그만~ 자세한 소개를 살펴보겠습니다.
우리의 목표는 NetEase Cloud의 인기곡 순위에 있는 모든 노래의 인기 댓글을 크롤링하는 것입니다.
이를 통해 크롤링에 필요한 작업량을 줄일 수 있을 뿐만 아니라 고품질 댓글도 저장할 수 있습니다.
구현 분석
먼저 그림과 같이 NetEase Cloud 웹 버전을 엽니다.
순위 목록을 클릭한 다음, 화면에서 클라우드 음악 인기곡 목록을 클릭합니다. 왼쪽, 사진과 같이:
먼저 노래를 무작위로 열어서 사진과 같이 특정 노래에 대한 인기 노래 리뷰를 얻는 방법을 알아 보겠습니다. 최근에 좋아하는 노래를 선택했습니다. 예:
입력 후 노래 리뷰를 볼 수 있습니다. 이 페이지 바로 아래에서 다음으로 이러한 댓글을 얻을 수 있는 방법을 찾아야 합니다.
다음으로 웹 콘솔을 엽니다(chrom용 개발자 도구를 엽니다. 다른 브라우저에서도 비슷해야 합니다). 그림과 같이 chrom 아래에서 F12를 누릅니다.
네트워크를 선택한 다음 F5를 눌러 새로고침합니다. 새로 고침 후 얻은 데이터는 다음과 같습니다.
브라우저가 많은 정보를 보내는 것을 볼 수 있는데 어떤 정보를 원할까요? 여기서 상태 코드는 서버 요청의 상태를 나타내는 것으로, 여기서 상태 코드는 요청이 정상임을 의미하는 200과 비정상을 의미하는 304입니다(종류가 많습니다. 상태 코드에 대해 더 알고 싶으면 직접 검색해 보세요. 여기서는 304의 구체적인 의미에 대해 언급하지 않겠습니다. 따라서 일반적으로 상태 코드가 200인 요청만 보면 됩니다. 또한 오른쪽 열의 미리보기를 통해 서버가 어떤 정보를 반환하는지(또는 응답을 보는지) 대략적으로 관찰할 수 있습니다. 이 두 가지 방법을 결합하면 분석하려는 요청을 빠르게 찾을 수 있습니다. 반복적인 검색 끝에 마침내 그림과 같이 노래 리뷰가 포함된 요청을 찾았습니다.
CSDN에서 스크린샷이 명확하지 않을 수도 있지만 R_SO_4_489998494?csrf_token=
라는 POST 요청에서 이 노래가 포함된 노래 리뷰를 찾았습니다. . 더 명확하게 볼 수 있도록 이 블록의 스크린샷을 찍어 보겠습니다.
기본 정보 요청:
요청 헤더:
요청의 양식 데이터:
이 노래에 대한 노래 리뷰가 포함된 요청 URL이 http://music.163.com/weapi/v1/resource/comments/R_SO_4_489998494?csrf_token=임을 알 수 있습니다. 의 첫 번째 부분은 동일하지만 R_SO_4_ 바로 다음에 나오는 숫자 문자열이 다릅니다. 각 노래에는 지정된 ID가 있고 R_SO_4_ 뒤에 오는 것이 노래의 ID임을 추론할 수 있습니다.
제출된 양식 데이터를 다시 살펴보면 params와 encSecKey라는 두 가지 데이터가 양식에 채워져야 한다는 것을 알 수 있습니다. 다음은 큰 문자열입니다. 몇 곡을 변경하면 각 노래의 params와 encSecKey가 서로 다르다는 것을 알 수 있습니다. 따라서 이 두 데이터는 특정 알고리즘에 의해 암호화되었을 수 있습니다.
서버에서 반환되는 댓글 관련 데이터는 json 형식으로 매우 풍부한 정보(해설자 정보, 댓글 날짜, 좋아요 수, 댓글 내용 등)가 포함되어 있으며 그 중 hotComments가 가장 핫합니다. 우리가 찾고 있는 댓글은 그림과 같이 총 15개입니다.
이 시점에서 방향을 결정했습니다. 즉, params와 2개의 매개변수 값만 결정하면 됩니다. encSecKey. 그런데 이 두 매개변수는 특정 알고리즘을 통해 암호화됩니다. 어떻게 해야 할까요? 패턴을 찾았습니다. http://music.163.com/weapi/v1/resource/comments/R_SO_4_489998494?csrf_token= R_SO_4_ 뒤의 숫자가 이 노래의 id 값이고, 다른 노래의 경우 param 및 encSecKey 값입니다. A와 같은 노래의 이 두 매개변수 값을 노래 B로 전달하면 동일한 페이지 수에 대해 이 매개변수는 보편적입니다. A는 노래 B로 전달됩니다. 다른 노래의 두 매개변수에 대해서는 해당 노래의 첫 번째 페이지에서 설명을 얻을 수 있습니다. 두 번째 페이지, 세 번째 페이지 등에 대해서도 마찬가지입니다.
사실 첫 페이지에서 인기 댓글 15개만 구하면 되므로 노래를 찾아 첫 페이지 요청에 있는 params와 encSecKey의 두 매개변수 값만 복사하면 됩니다. 내려와서 사용할 준비가 되었습니다.
이 두 매개 변수를 해독하는 방법은 실제로 강력한 Zhihu에 대한 답변이 있습니다. 관심 있는 친구들은 들어가서 살펴볼 수 있습니다(https://www.zhihu.com/question/36081767). 요구 사항을 완료하려면 게으른 방법을 사용해야 합니다. xixi.
지금까지 NetEase Cloud Music의 인기 댓글을 캡처하는 방법을 분석했습니다. 클라우드 뮤직 핫곡 목록의 모든 노래에 대한 정보를 얻는 방법을 분석해 보겠습니다.
클라우드 뮤직 핫곡 목록에 있는 모든 노래의 노래 이름과 해당 ID 값을 가져와야 합니다.
위의 분석 단계와 유사하게 먼저 그림과 같이 인기곡 목록의 URL을 입력합니다.
그림과 같이 F12를 눌러 WEB 워크벤치에 들어갑니다.
toplist라는 파일에 있는데 id=3778678인 GET 요청에서 이 목록의 노래 정보가 모두 발견되었습니다.
요청에 해당하는 정보는 그림과 같습니다.
그림과 같이 요청에 의해 반환된 결과를 미리 보겠습니다.
노래 정보가 포함된 코드를 라인에서 찾았습니다. 524 코드(그림 참조):
따라서 요청 코드에서 정보가 포함된 코드만 필터링하면 됩니다.
여기에서는 데이터 필터링에 정규식을 사용합니다.
특성을 관찰하면 두 가지 정규식 필터를 통해 필요한 노래 정보를 추출할 수 있습니다.
첫 번째 정규식의 경우 요청에서 반환된 모든 코드에서 525번째 코드 줄을 추출했습니다.
첫 번째 정규식은 다음과 같습니다.
<ul class="f-hide"> <li> <a href="/song\?id=\d*?" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >.*</a> </li> </ul>
두 번째 정규식은 524행에서 필요한 노래 정보를 추출합니다. 노래 제목과 노래 ID가 필요합니다.
노래 제목 가져오기:
<li><a href="/song\?id=\d*?" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >(.*?)</a></li>
노래 ID 가져오기:
<li><a href="/song\?id=(\d*?)" rel="external nofollow" rel="external nofollow" >.*?</a></li>
이제 전체 과정을 분석했으니 구체적인 내용을 보려면 코드로 가보겠습니다~~
코드는 다음과 같습니다. :
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import re import urllib.request import urllib.error import urllib.parse import json def get_all_hotSong(): #获取热歌榜所有歌曲名称和id url='http://music.163.com/discover/toplist?id=3778678' #网易云云音乐热歌榜url html=urllib.request.urlopen(url).read().decode('utf8') #打开url html=str(html) #转换成str pat1=r'<ul class="f-hide"><li><a href="/song\?id=\d*?">.*</a></li></ul>' #进行第一次筛选的正则表达式 result=re.compile(pat1).findall(html) #用正则表达式进行筛选 result=result[0] #获取tuple的第一个元素 pat2=r'<li><a href="/song\?id=\d*?">(.*?)</a></li>' #进行歌名筛选的正则表达式 pat3=r'<li><a href="/song\?id=(\d*?)">.*?</a></li>' #进行歌ID筛选的正则表达式 hot_song_name=re.compile(pat2).findall(result) #获取所有热门歌曲名称 hot_song_id=re.compile(pat3).findall(result) #获取所有热门歌曲对应的Id return hot_song_name,hot_song_id def get_hotComments(hot_song_name,hot_song_id): url='http://music.163.com/weapi/v1/resource/comments/R_SO_4_' + hot_song_id + '?csrf_token=' #歌评url header={ #请求头部 'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' } #post请求表单数据 data={'params':'zC7fzWBKxxsm6TZ3PiRjd056g9iGHtbtc8vjTpBXshKIboaPnUyAXKze+KNi9QiEz/IieyRnZfNztp7yvTFyBXOlVQP/JdYNZw2+GRQDg7grOR2ZjroqoOU2z0TNhy+qDHKSV8ZXOnxUF93w3DA51ADDQHB0IngL+v6N8KthdVZeZBe0d3EsUFS8ZJltNRUJ','encSecKey':'4801507e42c326dfc6b50539395a4fe417594f7cf122cf3d061d1447372ba3aa804541a8ae3b3811c081eb0f2b71827850af59af411a10a1795f7a16a5189d163bc9f67b3d1907f5e6fac652f7ef66e5a1f12d6949be851fcf4f39a0c2379580a040dc53b306d5c807bf313cc0e8f39bf7d35de691c497cda1d436b808549acc'} postdata=urllib.parse.urlencode(data).encode('utf8') #进行编码 request=urllib.request.Request(url,headers=header,data=postdata) reponse=urllib.request.urlopen(request).read().decode('utf8') json_dict=json.loads(reponse) #获取json hot_commit=json_dict['hotComments'] #获取json中的热门评论 num=0 fhandle=open('./song_comments','a') #写入文件 fhandle.write(hot_song_name+':'+'\n') for item in hot_commit: num+=1 fhandle.write(str(num)+'.'+item['content']+'\n') fhandle.write('\n==============================================\n\n') fhandle.close() hot_song_name,hot_song_id=get_all_hotSong() #获取热歌榜所有歌曲名称和id num=0 while num < len(hot_song_name): #保存所有热歌榜中的热评 print('正在抓取第%d首歌曲热评...'%(num+1)) get_hotComments(hot_song_name[num],hot_song_id[num]) print('第%d首歌曲热评抓取成功'%(num+1)) num+=1
code 연산 결과는 다음과 같습니다.
웹페이지에 있는 "If I Love You" 노래 리뷰와 우리가 저장한 노래 리뷰를 비교해보세요:
정보가 정확합니다~
요약
위 내용은 Python3은 NetEase Cloud Music의 인기 댓글 분석을 캡처하기 위해 크롤러를 구현합니다(그림).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











넷이즈의 미스터리 슈팅 게임 '오퍼레이션 아포칼립스(Operation Apocalypse)'는 지난 2월 국내 게임 버전 출시 이후 많은 플레이어들의 호기심을 불러일으켰다. 우리 모두 알고 있듯이 NetEase도 초창기에는 슈팅 게임이 몇 개 있었지만 "The Day After Tomorrow"와 "Knives Out"을 제외하고는 플레이할 수 있는 게임이 많지 않은 것 같습니다. 최근 몇 년 동안 NetEase가 시작한 작업은 추진력을 얻었으며 많은 틈새 트랙에서 상당한 결과를 얻었습니다. 이전에 한 번도 공개된 적이 없는 '오퍼레이션 아포칼립스'가 넷이즈의 새해 첫 촬영으로 자리 잡은 것만으로도 눈살을 찌푸리게 만들기에 충분하다. 플레이어들은 새로운 모바일 슈팅 게임을 간절히 기대하고 있습니다. NetEase가 개발한 5V5 멀티 히어로 스킬 슈팅 모바일 게임 'Operation Apocalypse'가 드디어 그 미스터리를 공개하고 첫 번째 라이브 시연을 공식 출시했습니다.

2024년 3월 27일, 베이징 시간, NetEase Games 및 Marvel Games는 공식적으로 새로운 게임인 슈퍼히어로 PVP 팀 슈팅 게임 "Marvel Rivals"를 발표했습니다. 플레이어는 풍부하고 다양한 슈퍼 히어로와 슈퍼 악당 라인업 중에서 자신이 좋아하는 캐릭터를 선택하여 올스타 팀을 구성하고, 고유한 초능력을 사용하여 Marvel 멀티버스의 다양한 파괴 가능한 지도에서 흥미진진한 전투에 참여할 수 있습니다. "우리는 전 세계 플레이어들에게 '마블 대결'을 선보이게 되어 매우 기쁩니다. 우리는 항상 마블 유니버스와 그 캐릭터를 사랑해 왔으며, 이 게임을 개발하게 되어 기쁘게 생각합니다." 이것은 바로 우리가 만들고 싶었던 게임이며, 이를 꿈에서 현실로 바꿀 수 있게 되어 매우 자랑스럽습니다." "NetEase

최근 Nishuihan 모바일 게임은 플레이어가 "입력만으로 블록버스터를 제작"할 수 있는 새로운 AI 비디오 생성 도구를 공식 출시했습니다. 공식 소개에 따르면 해당 기능은 니슈이한(Nishuihan) 게임 자체를 기반으로 구현됐으며 AI와 관련성이 높다. 장비나 배우, 특수효과가 필요 없으며 캐릭터 이미지, 액션, 대사만 입력하면 해당 콘텐츠가 AI를 통해 게임 내에서 실시간으로 생성되어 촬영됩니다. 동시에 플레이어는 캐릭터의 의상, 메이크업, 헤어스타일, 성격, 목소리 등 세부 사항을 조정할 수 있도록 지원됩니다. 이 기능은 사진/동영상 업로드, AI를 통한 모션 캡처, 게임 내에서 '게임에서는 사용할 수 없는' 동작 및 표현의 실시간 생성도 지원합니다. 관계자들은 이 기능이 "창의적인 공간을 끝없이 만들고 창의의 문턱을 가깝게 만든다"는 소라와 같은 비전을 가지고 있다고 밝혔습니다.

넷이즈와 마이크로소프트 블리자드가 블리자드의 전국 서버 복귀를 공식 발표했습니다. 넷이즈도 본사 건물 아래에서 축하 행사를 열었고 현장도 함께 가봤습니다! 이른 아침부터 현장 설정이 진행되었으며, 월드 오브 워크래프트, 하스스톤, 디아블로 3, 히어로즈 오브 더 스톰, 오버워치, 스타크래프트 2 등 블리자드의 모든 게임이 나열되어 있습니다. 블리자드와 넷이즈 히어로즈의 공식 발표에 주목해주세요. of the Storm은 언급되지 않았지만 이 게임에 대한 라이브 포스터가 없으므로 Heroes of the Storm을 좋아하는 플레이어는 걱정할 필요가 없습니다. Blizzard의 전체 가족이 돌아올 것입니다. 월드 오브 워크래프트(World of Warcraft)에도 특별한 관심을 기울여야 합니다. 표시된 포스터는 월드 오브 워크래프트 11.0 지구 중심 전쟁(War for the Center of the Earth)에 대한 것입니다. 당연히 메이슨이 직접 검을 복사한 이 클래식 버전은 올 여름 중국 서버에서 플레이될 예정입니다.

넷이즈의 '마블 슈퍼워'는 2024년 6월 17일 15시를 기해 운영을 종료하고 게임 서버를 종료한다고 밝혔다. 현재 모든 플랫폼의 다운로드 입구가 폐쇄되었으며, 게임 재충전 및 신규 유저 등록도 중단되었습니다. 마블 최초의 MOBA 모바일 게임인 이 게임은 슈퍼히어로의 전투 특성을 실감나게 표현하고, 마블 유니버스의 웅장한 세계관을 복원합니다. 게임에서는 어벤저스, 엑스맨, 판타스틱 4를 비롯한 수많은 슈퍼 히어로, 슈퍼 악당들이 평행 우주에 모여 아이언맨, 캡틴 아메리카, 스파이더맨, 로키, 타노스, 데드풀 웨이트와 경쟁할 수 있습니다. 60명 이상의 마블 클래식 캐릭터가 함께 싸울 수 있습니다!

최근 Tencent Interactive Entertainment Recruitment는 Photon H Studio가 컨텐츠가 풍부한 AAA 수준 오픈 월드 RPG 프로젝트 개발에 전념하고 있음을 나타내는 채용 정보를 공개했습니다. 채용 중인 직위는 UE5 엔지니어, 백엔드, 레벨 디자인, 액션 장면 디자인, 캐릭터 모델링, 특수 효과 및 배포 등 다양한 분야를 포괄합니다. 이러한 직책의 근무 대상 위치는 NetEase의 본사가 있는 항저우입니다.

NetEase Master 앱은 게이머를 위한 소셜 플랫폼입니다. 많은 사용자가 NetEase Master가 로그아웃한 후 재등록할 수 있는지 알고 싶어합니다. NetEase Master는 로그아웃한 후 다시 등록할 수 있습니까? 답변: 예. 1. NetEase Master는 로그아웃 후 재등록이 가능합니다. 2. 하지만 등록할 번호를 선택하려면 최소 1주일 동안 등록해야 합니다. 3. 계정을 지정할 수 없으며, 이전 데이터는 삭제됩니다. 4. 사용자가 로그아웃한 후에는 이전 정보 및 관련 잔액이 모두 삭제됩니다. 관련 기사: NetEase 마스터는 바인딩된 휴대폰 번호를 어떻게 변경합니까?

현재 월드 오브 워크래프트에는 4가지 버전이 있습니다. 국내 서버가 폐쇄된 지 1년이 넘었습니다. 각 버전이 어디에서 개발되었는지 모르는 플레이어가 많을 것으로 추정됩니다. 1. 정식 서버 버전 10.0이 종료되고, 국내 서버가 종료되기 전, 버전 10.0이 막 시작되었습니다. 현재 버전 10.27이 나올 예정이며, 에이지 오브 드래곤 확장팩은 종료됩니다. . 버전 10.0은 해외 서버에서 좋은 평가를 받고 블리자드의 인기를 어느 정도 회복했지만, 버전 10.0의 게임 핵심은 여전히 큰 비밀과 레이드에 관한 것이며 PVP 플레이어의 수가 매우 많습니다. 작은. 정식 서버 버전이 지속적으로 업데이트되면서 플레이어들의 게임 성향도 PVE, PVP에서 수집형으로 바뀌었습니다.
