python 파충류 와 Bilibili 의 투 덜 거 리 는 프로 세 스 분석

6256 단어 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 에 관 한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기