python 탄막 및 데이터 분석
어 쩔 수 없 이 어 쩔 수 없 었 지만 이 제 는 다음 경 기 를 앞 두 고 정신 을 차 려 야 한다.이 시작 도 오프라인 이 었 고 결승전 장 소 는 난 징 이 었 으 며 그 후에 전염병 으로 인해 온라인 이 되 었 다.
물론 경기 내용 은 변 함 없 는 득 현학 이 고 내용 은 빅 데이터 에 관 한 것 이다.
우리 학 교 는 이전에 관련 교육 을 개설 한 적 이 없 기 때문에 스스로 생각해 볼 수 밖 에 없다.
자,쓸데없는 말 은 그만 하고 본문 부터 시작 합 시다.
경기 소개
빅 데 이 터 는 전체적으로 세 가지 과정 으로 나 뉜 다.
첫 번 째 과정 은 hadop 환경 을 구축 하 는 것 이다.
이것 은 처음에는 나 도 매우 어 리 석 었 지만,후에 강 좌 를 보고 대충 알 게 되 었 다.전체적으로 말 하면 hadop 은 집적 환경 으로 이 환경 에는 많은 소프트웨어 가 포함 되 어 있다.
이 소프트웨어 들 의 기능 은 각각 다르다.예 를 들 어 파일 분포 식(용서 하 세 요.저도 이름 을 잊 어 버 렸 습 니 다)은 컴퓨터 에 1 개의 g 크기 가 있다 고 가정 하 는 것 입 니 다.그러나 한 파일 에 10 개의 g 이 있다 면 이 시스템 으로 파일 을 10 부 로 나 누 어 각각 저장 할 수 있 습 니 다.
전반적 으로 빅 데 이 터 를 위 한 서비스 환경 이다.
두 번 째 과정 은 바로 데 이 터 를 얻 는 것 이다.
이것 은 경기 의 요구 에 따라 정 해진 것 이다.나 는 첫 경기 때 오픈 소스 의 전자상거래 사 이 트 를 기어 오 르 라 고 요 구 했 는데 이름 이 SHOPXO 인 것 같다.이 파충류 의 기초 가 있 는 학 우 는 가서 시험 해 볼 수 있다.
결승전 은 아직 비교 가 되 지 않 았 지만 동 영상의 탄막 을 오 르 려 는 것 같다.이것 은 단순히 동 영상 을 오 르 는 것 보다 좀 번 거 로 운 것 이다.왜냐하면 모든 사이트 가 탄막 에 대한 알고리즘 이 다 르 기 때문이다.
잠시 후에 나 는 파충류 두 개 를 써 서 각각 B 역 과 A 역 의 탄막 을 오 르 면 너희들 은 알 게 될 것 이다.
세 번 째 과정 은 바로 데 이 터 를 분석 하 는 것 이다.
그 건 솔직히 저도 잘 모 르 겠 어 요.이 단 계 를 분석 하면 사실 python 에서 할 수 있 지만 그 환경 에서 해 야 할 것 같 아 요...어 리 석 어서 여 기 는 자세히 쓰 지 않 겠 습 니 다.
이 글 을 쓰기 전에 나 는 awd 경기 에 관 한 것 도 한 편 쓴 적 이 있다.그러나 그 중 에 비교적 특수 한 것들 이 많이 관련 되 어 있어 서 당분간 밖으로 전해 질 수 없 기 때문에 나 는 먼저 은밀 한 것 으로 설정 했다.
빅 데이터 에 관 해 서 는 사실 나 는 너희들 과 마찬가지 로 신출내기 이다.단지 예전 에 일부 필요 로 파충류 에 대해 배 운 적 이 있 기 때문에 내 가 맡 은 것 은 두 번 째 내용 이다.이어서 나 도 파충류 와 데이터 분석 에 관 한 이 야 기 를 전편 으로 할 것 이다.
파충류
이것 은 빅 데이터 에서 매우 중요 한 것 이 라 고 할 수 있 습 니 다.앞에서 분석 을 아무리 잘 해도 데이터 가 없 으 면 분석 할 수 있 기 때 문 입 니 다.그래서 파충 류 를 잘 배 워 라.
파충 류 는 사실 일종 의 대명사 로 기능 이 비교적 특수 하기 때문에 이렇게 부른다.파충 류 를 배 운 적 이 없 기 전에 우리 가 정상적으로 어떻게 정 보 를 얻 었 는 지 생각해 보 자.예 를 들 어 우리 가 주걸륜 의 노래 리스트 가 어떤 지 알 고 싶 을 때.
첫 번 째 단 계 는 바 이 두 에 가서 주걸륜 을 검색 한 후에 우 리 는 qq 음악 과 같은 음악 사이트 에서 주걸륜 의 노래 리스트 를 볼 수 있 을 것 이다.파충류 도 그래 야 지.
그것 은 네가 상상 하 는 것 만큼 그렇게 신기 하지 않다.틀림없이 어떤 사이트 에서 조작 해 야 한다.
이어서 주걸륜 의 정 보 를 조금씩 기록 할 수 있다.우리 의 파충류 가 실현 되 는 것 도 이런 과정 이다.단지 1 초 에 한 페이지 만 방문 할 수 있 을 뿐,파충 류 는 1 초 에 몇 만 페이지 를 방문 할 수 있다.
자,파충류 에 관 한 더 자세 한 것 은 말 하지 않 겠 습 니 다.우 리 는 파충류 에 관 한 것 이 아 닙 니 다.csdn 에는 파충류 라 고 쓰 여 있 는 강좌 가 많 습 니 다.상세 합 니 다.
우리 의 주요 목적 은 실전 을 진행 하 는 것 이다.
사이트 탄막
원래 사이트 동 영상 정 보 를 제목 으로 하려 고 했 는데 그 건 정말 어렵 지 않 았 어 요.마침 경기 용 으로 탄막 을 얻 었 으 니 차라리 탄막 을 어떻게 오 르 는 지 얘 기해 보 세 요.
1.A 역
A 역 은 B 역 에 비해 좀 간단 하 다.우 리 는 먼저 웹 페이지 를 관찰한다.예 를 들 어 이것 은 내 가 마음대로 연 동 영상 이다.
현재 사이트 의 이러한 데 이 터 는 대부분 동태 적 이기 때문에 우 리 는 html 해상도 기로 웹 페이지 를 분석 할 수 없고 xhr 안의 데 이 터 를 직접 기어 올 라 가 야 한다.
F12 를 눌 러 서 가방 을 잡 으 세 요.그리고 우 리 는 검색 창 에서 우리 의 탄막 을 마음대로 검색 했다.
다행히 하나 밖 에 없어 요.우 리 는 이 검색 결 과 를 더 블 클릭 하여 관찰 했다.privew 를 누 르 면 이 안에 우리 의 모든 탄막 이 포함 되 어 있 음 을 발견 할 수 있 습 니 다.
그래서 이런 사 이 트 는 직접 오 르 면 된다.headers 를 누 르 면 매개 변수 와 요청 방식 을 관찰 합 니 다.
ok。이것들 을 얻 은 후에 대본 을 써 라.
import requests
url="https://www.acfun.cn/rest/pc-direct/new-danmaku/poll"
headers={
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36",
"cookie":""
# ,cookie 。A , cookie。
}
data={
"videoId":"15779946",
"lastFetchTime":"0",
"enableAdvanced":"true"
}
html=requests.post(url,headers=headers,data=data)
html=html.json()
html=html["added"]
for i in html:
print(i["body"])
효 과 는 그림 과 같다.수량 을 세 어 보 니 마침 이 영상의 탄막 수 였 다.파일 을 쓰 는 기능 을 추가 하 는 등 자신의 물건 을 추가 할 수 있 습 니 다.
2.B 역
이 건 좀 특이 해.B 역 의 탄막 은 다른 알고리즘 이다.
B 역 은 탄막 을 한 홈 페이지 에 단독으로 벗 겨 내 고 동 영상 에 대응 하 는 cid 가 있어 야 탄막 에 대응 하 는 코드 를 얻 을 수 있 으 며 동 영상의 탄막 정 보 를 얻 을 수 있다.예 를 들 어:[삐 리 삐 리 2019 세배 제]
우선,우 리 는 동 영상의 동 영상 번 호 를 얻 으 려 면 예전 에는 av 번 이 었 고 지금 은 bv 번 이 었 다.
그리고 이 링크 에 bv 번 호 를 추가 하 세 요.이것 은 삐걱삐걱 하 는 api 로 cid 를 얻 을 수 있 습 니 다.
https://api.bilibili.com/x/player/pagelist?bvid=BV17t411y7R1&jsonp=jsonp
연결 중인 bvid 를 bv 번호 로 바 꿉 니 다.
그림 에서 우 리 는 동 영상 에 4 개의 cid 가 있 는 것 을 발견 했다.
이어서 우 리 는 다음 api 를 사용 하면 탄막 을 얻 을 수 있다.
https://comment.bilibili.com/76457841.xml
뒤의 숫자 를 방금 찾 은 cid 로 바 꿉 니 다.
결 과 는 그림 과 같다.
좋아.이것 이 바로 우리 가 수 동 으로 탄막 을 얻 는 절차 이 고,다음은 파충류 로 만 들 면 된다.
첫 번 째 단 계 는 bv 를 av 번호 로 바 꿉 니 다.사실 너 는 직접 bv 번 호 를 사용 할 수 있 지만,내 가 이 게시 물 을 만 들 기 전에 av 번 으로 찾 았 기 때문에 이렇게 한 걸음 더 했다.
이 단 계 는 바로 인터넷 에서 도 구 를 찾 으 면 됩 니 다.많 으 면 코드 에 추가 하지 않 습 니 다.
2 부,방금 준 두 번 째 api 로 cid 를 획득 합 니 다.우 리 는 파충 류 를 사용 하면 인터넷 주 소 를 규정된 격식 으로 만 들 수 있다.
https://www.bilibili.com/widget/getPageList?aid=?
물음표
세 번 째,기어 라.우리 가 마지막 으로 돌아 온 것 은 xml 파일 을 볼 수 있 기 때문에 파충류 안의 xml 해상도 기 를 이용 하여 분석 하면 된다.
다른 것 은 쓸데없는 소리 하지 말고 바로 코드 를 올 려 라.못 알 아 본 댓 글 이 있 으 면 물 어 봐.
import requests
from bs4 import BeautifulSoup
import lxml
aid=input(" av : bv av
")
file_name=input(" :
")
f=open(file_name,"a",encoding='utf-8')
headers={
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36"
}
get_cid="https://www.bilibili.com/widget/getPageList?aid="+aid
cid_list=eval(requests.get(get_cid).text)
for cid in cid_list:
cid=cid["cid"]
xml="https://comment.bilibili.com/"+str(cid)+".xml"
html=requests.get(xml,headers=headers)
html.encoding=html.apparent_encoding
soup=BeautifulSoup(html.text,"xml").find_all("d")
for dm in soup:
f.write(dm.text+"
")
f.close()
이것 은 후속 분석 을 편리 하 게 하기 위해 탄막 파일 을 직접 로 컬 에 저장 한 것 이다.결 과 는 그림 과 같다.모두 9 만 여 개의 탄막 이다.
됐어,나머지 는 쓰기 귀찮아.
데이터 분석
분석 을 하려 면 사실 이것 은 매우 넓 기 때문에 특정한 요구 에 따라 해 야 한다.
먼저 첫 번 째,고주파 어 통 계 를 말 해 보 세 요.
코드 는 제 가 복사 한 것 입 니 다.간단 하지만 사용 하기 쉽 습 니 다.
(이전 파일 을 스 크 립 트 와 같은 디 렉 터 리 아래 에 놓 습 니 다)
import jieba.analyse
f =open(r'bilibil .txt',encoding='utf-8')#
text=f.read() #
text_list=jieba.analyse.extract_tags(text,topK=40)# jieba , 40
text_list=",".join(text_list)#
print(text_list)
그림 과 같이 글자 수가 가장 많은 단어 40 개가 집계 됐다.기계 인식 이 라 부정 확 할 수 밖 에 없 으 니 이상 하 게 나타 나 는 것 에 신경 쓰 지 마라.
두 번 째,감정 분석.이것 은 내 가 추측 해서 사용 할 수 있 는 물건 이다.
우 리 는 이것 을 우리 가 쓴 것 보다 직접 baiduAPI 로 할 수 있다.이 api 는 모든 데 이 터 를 감정 적 으로 예측 하고 적 극 적 이거 나 소 극적인 확률 로 되 돌려 줍 니 다.
하지만 바 이 두 api 계 정 을 먼저 신청 해 야 합 니 다.이것 은 말 하지 않 겠 습 니 다.바 이 두 는 튜 토리 얼 이 있 습 니 다.
코드 도 내 가 복사 한 거 야.먼저 원작 자 님 께 감 사 드 립 니 다.정말 잘 썼 습 니 다.
(원래 두 개의 스 크 립 트 를 원 했 는데 개선 해서 하나의 스 크 립 트 로 썼 습 니 다.이 스 크 립 트 는 두 단어 만 테스트 했 습 니 다.파일 을 분석 하려 면 조금 만 바 꾸 면 됩 니 다.)
import re
import requests
import json
# text lenth
def cut_text(text, lenth):
textArr = re.findall('.{' + str(lenth) + '}', text)
textArr.append(text[(len(textArr) * lenth):])
return textArr #
def get_emotion(access_token,data): #
# API token URL
token = access_token
url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token={}'.format(token)
# API 2048 , 2048,
if (len(data.encode()) < 2048):
new_each = {
'text': data # new_each ,data string
}
new_each = json.dumps(new_each)
res = requests.post(url, data=new_each) # URL API
# print("content: ", res.content)
res_text = res.text # , string
result = res_text.find('items') # items
positive = 1
if (result != -1): # -1, items
json_data = json.loads(res.text)
negative = (json_data['items'][0]['negative_prob']) #
positive = (json_data['items'][0]['positive_prob']) #
print("positive:",positive)
print("negative:",negative)
# print(positive)
if (positive > negative): # , 2
return 2
elif (positive == negative): # , 1
return 1
else:
return 0 # , 0
else:
return 1
else:
data = cut_text(data, 1500) # 1500,
# print(data)
sum_positive = 0.0 #
sum_negative = 0.0 #
for each in data: #
# print(each)
new_each = {
'text': each # new_each
}
new_each = json.dumps(new_each)
res = requests.post(url, data=new_each) # URL API
# print("content: ", res.content)
res_text = res.text # , string
result = res_text.find('items') # items
if (result != -1):
json_data = json.loads(res.text) # -1, items
positive = (json_data['items'][0]['positive_prob']) #
negative = (json_data['items'][0]['negative_prob']) #
sum_positive = sum_positive + positive #
sum_negative = sum_negative + negative #
# print(positive)
print(sum_positive)
print(sum_negative)
if (sum_positive > sum_negative): # , 2
return 2
elif (sum_positive == sum_negative): # , 1
return 1
else:
return 0 # , 0
def main():
# client_id API Key, client_secret Secret Key
# , 。
client_id=""
client_secret=""
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret
response = requests.get(host)
list_new=eval(response.text)
access_token=list_new["access_token"]
txt1 = " "
txt2 = " !"
print("txt1 :",get_emotion(access_token,txt1))
print("txt2 :",get_emotion(access_token,txt2))
if __name__ == "__main__":
main()
효 과 는 그림 과 같다.나머지 는 접 는 그림 같은 것 은 쓰 지 않 고 바 이 두 에 다 있다.
python 의 탄막 기어 오 르 기와 데이터 분석 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python python 탄막 기어 오 르 기 데이터 분석 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.