python 파충류 와 Bilibili 의 투 덜 거 리 는 프로 세 스 분석
최근 에는 B 사이트 동 영상 을 대규모로 다운로드 하 는 동시에 다 운 받 은 동 영상 을 BV 번호 로 이름 을 바 꿔 서버 에 업로드 해 야 한다.이 작업 은 처음에 저 는 완전히 손 으로 완 성 했 습 니 다.원숭이 를 통 해 다운 로드 했 습 니 다.그런데 몇 십 개의 동 영상 을 다운로드 하 는 것 이 좋 았 습 니 다.조금 만 더 많 으 면 정말 귀 찮 고 생산력 이 낮 아서 스 크 립 트 를 만 들 겠 다 는 생각 이 들 었 습 니 다.
처음에 저 는 B 사이트 에서 키 워드 를 검색 한 다음 에 동 영상 을 계속 클릭 해서 다운로드 해 야 했 습 니 다.그리고 동 영상 을 다운로드 한 후에 이 동 영상 을 찾 아서 BV 번 호 를 수정 해 야 했 습 니 다.효율 이 너무 낮 았 습 니 다.특히 다운로드 한 동 영상 이 많아 졌 을 때 다시 돌아 와 서 해당 하 는 BV 번 호 를 찾 는 것 도 번 거 로 운 과정 이 었 습 니 다.그래서 python 스 크 립 트 를 만 들 기로 결 정 했 습 니 다.
이번 스 크 립 트 는 업무 효율 을 대폭 높 일 수 있 지만,그것 은 결코 자동 으로 임 무 를 완성 하 는 것 이 아니다.왜냐하면 우 리 는 Bilibili 투 덜 거 리 는 것 을 사 용 했 기 때문이다.투 덜 거 리 는 것 은 정말 쓰기 좋 습 니 다.사실 전자 동 으로 도 충분히 만 들 수 있 지만 필요 없다 고 생각 합 니 다.효율 이 높 습 니 다~)
여러분,더 좋 은 건의 가 있 으 시 면 댓 글 을 환영 합 니 다.
마지막 으로 짱 주세요.
개술
업무 절 차 를 간략하게 소개 하 다.
(1)파충 류 를 통 해 동 영상 BV 번 호 를 추출 하여 txt 파일 에 저장 합 니 다.다음 과 같 습 니 다.
(2)BV 번 호 를 계속 복사 하면 삐 약 삐 약 자동 으로 동 영상 다운로드
(3)스 크 립 트 를 통 해 다운로드 한 동 영상 을 원 클릭 으로 이름 변경
본문
파충류 부분
1.라 이브 러 리 의존
requestsl
xml
2.코드
관련 설명 은 이미 주석 에 표시 되 어 있다.
'''
author:Ericam
description: b
'''
import requests
import re
from lxml import etree
import time
'''
。
url 。
'''
def getHref(url,page):
try:
req = requests.get(url,timeout=5,headers=headers)
html = req.text
data = etree.HTML(html)
'''
page-1://*[@id="all-list"]/div[1]/div[2]/ul[@class="video-list"]/li
other://*[@id="all-list"]/div[1]/ul[@class="video-list"]/li
'''
pattern = '//*[@id="all-list"]/div[1]/div[2]/ul[contains(@class,"video-list")]/li' if page == 1 else '//*[@id="all-list"]/div[1]/ul[contains(@class,"video-list")]/li'
vurlList = data.xpath(pattern)
for li in vurlList:
vurl = li.xpath(".//a/attribute::href")[0]
title = li.xpath(".//a/attribute::title")[0]
yield vurl,title
except:
print(' %d ' % page)
print('Unfortunitely -- An Unknow Error Happened, Please wait 3 seconds')
time.sleep(3)
'''
, url BV
'''
def getBv(href):
pattern = re.compile('(BV.*?)\?')
data = re.search(pattern,href)
if data == None:
return ''
return data.group(1)
if __name__ == "__main__":
#
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
hrefList = []
titleList = []
# , , 1~2
for i in range(1,3):
url = "https://search.bilibili.com/all?keyword= &page={0}".format(i) # keyword
l = getHref(url,i)
for vurl,title in l:
hrefList.append(vurl)
titleList.append(title)
print(" {0} ".format(i))
time.sleep(2)
print("--------------------------- BV -----------------------------")
for i in range(len(hrefList)):
hrefList[i] = getBv(hrefList[i])
with open("bv.txt",'w',encoding='utf-8') as f:
for i in range(len(hrefList)):
f.write(hrefList[i]+"\t"+titleList[i]+"
")
print(" ")
3.결과 얻 기찍찍
투 덜 거 리 는 링크 를 드 립 니 다두덜거리다사용 하기 좋 은 작은 도구 입 니 다.
우 리 는 방금 기어 온 링크 를 한쪽 에 놓 고 BV 번 호 를 계속 복사 한 후에 투 덜 거 리 며 다운로드 하면 된다.
비디오 이름 바 꾸 기
잘 다운 로드 된 동 영상 은 다음 과 같다.
왜 이름 을 바 꿔 야 하 는 것 일 까?동 영상 수가 점점 많아 질 때,예 를 들 어 수천 만 명 이 되면 이름 을 통 해 관리 하기 어렵 고 무 거 운 것 도 하기 어렵 기 때문에 반복 되 는 동 영상 을 계속 다운로드 할 확률 이 높다.
B 역 에서 BV 번 호 는 모든 동 영상의'신분증'(메 인 키)이기 때문에 이 를 이용 하여 동 영상 이름 을 붙 이면 향후 관리 에 편리 할 뿐만 아니 라 리 셋 도 편리 하 다.
코드
'''
author:Ericam
description: b , bv
'''
import os
import difflib
if __name__ == '__main__':
bvpath = os.path.join("D:/","Coding","python","Python ")
os.chdir(bvpath)
d = {}
'''
bvdownload.txt bv title
, , bv title
bvdownload.txt ,
'''
with open("bvdownload.txt",'r',encoding='utf-8')as f:
lines = f.readlines()
for val in lines:
val = val.strip("
")
data = val.split("\t")
bv = data[0]
title = data[1]
d[title] = bv
#
path = 'F:/bilibili /'
os.chdir(path)
videoList = os.listdir()
#
for key in d:
video = difflib.get_close_matches(key,videoList,1, cutoff=0.3)
if len(video) == 0:
continue
video = video[0]
# ,
if os.path.isfile(d[key]+".mp4") and os.path.isfile(video):
os.remove(video)
else:
if os.path.isfile(video):
os.rename(video,d[key]+".mp4")
print(" !")
결과 시범완 료 된 비디오 목록 이름 바 꾸 기:
python 파충류 와 Bilibili 의 투 덜 거 리 는 프로 세 스 분석 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 python 파충류 Bilibili 에 관 한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.