最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python爬蟲線程池案例詳解(梨視頻短視頻爬取)

 更新時(shí)間:2021年02月20日 09:49:01   作者:小王子愛上玫瑰  
這篇文章主要介紹了python爬蟲線程池案例詳解(梨視頻短視頻爬取),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

python爬蟲-梨視頻短視頻爬取(線程池)

示例代碼

import requests
from lxml import etree
import random
from multiprocessing.dummy import Pool


# 多進(jìn)程要傳的方法,多進(jìn)程pool.map()傳的第二個(gè)參數(shù)是一個(gè)迭代器對(duì)象
# 而傳的get_video方法也要有一個(gè)迭代器參數(shù)
def get_video(dic):
  headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56'
    }
  video_data = requests.get(url = dic['url'] , headers = headers).content
  print(dic['name']+'開始下載')
  
  # 有的文件名中包含空格,在并發(fā)執(zhí)行時(shí)會(huì)報(bào)錯(cuò),這里用隨機(jī)數(shù)給文件起名了
  #path = dic['name']+'.mp4'會(huì)報(bào)錯(cuò)
  path = "./lishipin/"+str(int(random.random()*100)) + '.mp4'
  
  with open(path,'wb') as fp:
    fp.write(video_data)
  print(dic['name']+'下載成功')

def main():  
  # web_url:梨視頻官網(wǎng)
  web_url = 'https://www.pearvideo.com/category_5'
  headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56'
    }
  
  # web_page_tex:官網(wǎng)頁面
  web_page_text = requests.get(url = web_url,headers = headers).text
  
  tree = etree.HTML(web_page_text)
  
  # 解析梨視頻官網(wǎng)“生活欄”中的所有l(wèi)i標(biāo)簽,遍歷li標(biāo)簽,提取視頻的url
  li_list = tree.xpath('//*[@id="listvideoListUl"]/li')
  rea_urls=[]
  for li in li_list:
     # video_name獲取視頻的名稱
    video_name = li.xpath('./div/a/div[2]/text()')[0]+'.mp4'
    
    # 加上'https://www.pearvideo.com/'得到完整的video_url
    video_url = 'https://www.pearvideo.com/'+li.xpath("./div/a/@href")[0]
    
    # 通過官網(wǎng)界面提取的url,并不是真正的url,
    # 因?yàn)镸P4的視頻是動(dòng)態(tài)加載出來的,所以通過ajax請(qǐng)求獲取視頻的真實(shí)網(wǎng)址
    # 但是通過分析發(fā)現(xiàn),ajax請(qǐng)求獲取的網(wǎng)址是一個(gè)偽網(wǎng)址,和真實(shí)網(wǎng)址有區(qū)別(cont...)
      ##真地址:https://video.pearvideo.com/mp4/third/20210208/cont-1719874-15690592-205957-ld.mp4
      ##                          1719874
      ##偽地址:https://video.pearvideo.com/mp4/third/20210208/1612867876612-15690592-205957-ld.mp4


    # 通過得到的video_url可以分析到 真假網(wǎng)址 不同的細(xì)節(jié)之處--countId
    # 通過ajax請(qǐng)求向video_url發(fā)起get請(qǐng)求,需要加countId和mrd參數(shù)
    # 分析video_url得到countId,mrd是一個(gè)隨機(jī)小樹
    countId = video_url.split("/")[-1].split("_")[1]
    mrd = random.random()
    
    # 加'Referer'參數(shù),否則會(huì)顯示該視頻已下架了
    headers = {
      'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56',
      'Referer': 'https://www.pearvideo.com/video_' + countId
      }
    ajax_url = 'https://www.pearvideo.com/videoStatus.jsp'
    
    # 利用ajax請(qǐng)求獲取偽地址
    # https://www.pearvideo.com/videoStatus.jsp?contId=1719874&mrd=0.7759942025851074
    params = {
        'contId': str(countId),
        'mrd': str(mrd)
      }
    
    # 通過ajax請(qǐng)求,發(fā)起get請(qǐng)求得到一個(gè)json串
    ajax_json = requests.get(url = ajax_url,headers = headers,params = params).json()
    
    # 得到的是 假地址
    fake_url = ajax_json['videoInfo']['videos']['srcUrl']
    
    # 對(duì)假地址進(jìn)行處理,并把剛才的countId組合起來
    fake_url_list = fake_url.split('/')
    end = fake_url_list.pop()  #刪除不必要的字符串
    end_list = end.split("-")
    end_url = ""  #end_url是一個(gè)結(jié)尾字符串
    for i in range(len(end_list)-1):
      end_url = end_url + "-"+ end_list[i+1]
    
    # 真實(shí)的地址,先用假地址,然后組合countId
    rea_url=""
    for element in fake_url_list:
      rea_url=rea_url+element+"/"
    rea_url=rea_url+"cont-"+str(countId) + end_url
    
    # print(rea_url)
    
    
    dic = {
        'url':rea_url,
        'name':video_name
      }
    rea_urls.append(dic)
    
  #print(rea_urls)
  pool = Pool(4)
  pool.map(get_video,rea_urls)
  pool.close()
  pool.join()
  
if __name__ == '__main__':
  main()

知識(shí)點(diǎn)擴(kuò)展:

Python爬蟲下載視頻(梨視頻)

梨視頻示例:Ctrl+Alt+L格式化代碼

import re
import requests
import hashlib
import time
# print(respose.status_code)# 響應(yīng)的狀態(tài)碼
# print(respose.content) #返回字節(jié)信息
# print(respose.text) #返回文本內(nèi)容
 
mainurl = "https://www.pearvideo.com/"
videourl = "http://www.pearvideo.com/video_1499584"
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Accept-Encoding':'gzip, deflate, sdch',
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language':'zh-CN,zh;q=0.8',
  }
# 獲取視頻鏈接列表
def geturls(url):
  res=requests.get(url)
  urls=re.findall('class="vervideo-tbd".*?href="(.*?)" rel="external nofollow" ',res.text,re.S)
  urllist=[]
  for i in urls:
    prefix='https://www.pearvideo.com/'
    urllist.append(prefix+i)
  return urllist
# 獲取視頻鏈接并下載(寫入到硬盤)
def getvideo(url):
  res=requests.get(url,headers)
  mp4url=re.findall('srcUrl="(.*?\.mp4)"',res.text,re.S)[0]
  video=requests.get(mp4url)
  m = hashlib.md5()
  m.update(url.encode('utf-8'))
  m.update(str(time.time()).encode('utf-8'))
  filename = r'%s.mp4' % m.hexdigest()
  print(filename)
  with open("/home/tony/文檔/爬蟲視頻/%s.mp4"%filename,'wb') as f:
    f.write(video.content)
def main():
  video_urllist=geturls(mainurl)
  for i in video_urllist:
    getvideo(i)
if __name__=='__main__':
  main()

到此這篇關(guān)于python爬蟲線程池案例詳解(梨視頻短視頻爬取)的文章就介紹到這了,更多相關(guān)python爬蟲梨視頻短視頻爬取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python opencv鼠標(biāo)畫點(diǎn)之cv2.drawMarker()函數(shù)

    python opencv鼠標(biāo)畫點(diǎn)之cv2.drawMarker()函數(shù)

    這篇文章主要給大家介紹了關(guān)于python opencv鼠標(biāo)畫點(diǎn)之cv2.drawMarker()函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用opencv具有一定的參考下學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Python計(jì)算信息熵實(shí)例

    Python計(jì)算信息熵實(shí)例

    這篇文章主要介紹了Python計(jì)算信息熵實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python編程pygame模塊實(shí)現(xiàn)移動(dòng)的小車示例代碼

    Python編程pygame模塊實(shí)現(xiàn)移動(dòng)的小車示例代碼

    這篇文章主要介紹了Python編程pygame模塊實(shí)現(xiàn)移動(dòng)的小車示例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Python timeit模塊原理及使用方法

    Python timeit模塊原理及使用方法

    這篇文章主要介紹了Python timeit模塊原理及使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python?pycharm讀取文件相對(duì)路徑與絕對(duì)路徑的方法

    Python?pycharm讀取文件相對(duì)路徑與絕對(duì)路徑的方法

    這篇文章主要給大家介紹了關(guān)于Python?pycharm讀取文件相對(duì)路徑與絕對(duì)路徑的方法,絕對(duì)路徑就是文件的真正存在的路徑,是指從硬盤的根目錄(盤符)開始,進(jìn)行一級(jí)級(jí)目錄指向文件,相對(duì)路徑就是以當(dāng)前文件為基準(zhǔn)進(jìn)行一級(jí)級(jí)目錄指向被引用的資源文件,需要的朋友可以參考下
    2023-12-12
  • Python函數(shù)返回不定數(shù)量的值方法

    Python函數(shù)返回不定數(shù)量的值方法

    今天小編就為大家分享一篇Python函數(shù)返回不定數(shù)量的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python獲取百度熱搜的完整代碼

    Python獲取百度熱搜的完整代碼

    這篇文章主要介紹了Python獲取百度熱搜的完整代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Python之Selenium自動(dòng)化瀏覽器測(cè)試詳解

    Python之Selenium自動(dòng)化瀏覽器測(cè)試詳解

    這篇文章主要為大家詳細(xì)介紹了Python自動(dòng)化瀏覽器測(cè)試,使用Selenium,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • PyCharm常用配置和常用插件(小結(jié))

    PyCharm常用配置和常用插件(小結(jié))

    這篇文章主要介紹了PyCharm常用配置和常用插件(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • GCN?圖神經(jīng)網(wǎng)絡(luò)使用詳解?可視化?Pytorch

    GCN?圖神經(jīng)網(wǎng)絡(luò)使用詳解?可視化?Pytorch

    這篇文章主要介紹了GCN?圖神經(jīng)網(wǎng)絡(luò)使用詳解?可視化?Pytorch,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論

云南省| 安义县| 和林格尔县| 高碑店市| 蒙阴县| 蓬莱市| 安丘市| 白水县| 从化市| 沙坪坝区| 临安市| 通州区| 普兰县| 兴宁市| 开平市| 浙江省| 凉山| 中山市| 浦北县| 青浦区| 永州市| 西丰县| 武城县| 禹城市| 淮安市| 长春市| 磐石市| 富蕴县| 霞浦县| 明光市| 阿荣旗| 台安县| 汾阳市| 库车县| 双江| 改则县| 海门市| 丹凤县| 江北区| 万年县| 兰溪市|