【Python爬蟲】如何把抖音漂亮的小姐姐(高清、無水印)保存到硬盤里,附源碼


前言

現在自媒體平台上經常有一些視頻素材需要保存下來,但是大部分平台下載下來都帶上了平台水印,影響視頻美觀。這次我們用爬蟲,可以爬到高清無水印的視頻

本文知識點

1、selenium模塊的使用
2、requests模塊的使用
3、re正則表達式的使用

環境介紹

  • python 3.8
  • pycharm 2021專業版 >>> 激活碼
  • 谷歌瀏覽器/火狐瀏覽器
  • 谷歌驅動/火狐驅動

模塊使用

  • requests >>> pip install requests
  • selenium >>> pip install selenium
  • re
  • time

內容

本次目標:爬取漂亮小姐姐視頻內容

分析網頁

F12或者鼠標右鍵點擊檢查 >>>選擇network 下面 media 過濾音頻和視頻數據包

找到播放地址 (指定的當前視頻的播放地址),視頻播放地址, 是可以在視頻詳情頁網頁源代碼里面可以獲取

代碼實現步驟:

  1. 發送請求, 對於視頻詳情頁發送請求 https://www.douyin.com/video/7012228758782397699
  2. 獲取數據, 獲取網頁源代碼數據內容
  3. 解析數據, 提取視頻播放地址 以及 視頻標題
  4. 保存數據, 把小姐姐視頻保存到本地

爬取一個視頻內容

導入模塊

import requests  # 數據請求模塊 pip install requests
import re  # 正則表達式模塊 內置模塊 不需要安裝

 

發送請求

url = 'https://www.douyin.com/video/6975418738799676680'
# headers 偽裝 把python代碼進行偽裝 讓服務器識別不出我是腳本
headers = {
    'cookie': 'douyin.com; ttcid=de99440b8a5c4d16affc993730f4983310; ttwid=1%7CwyS5KyrVGXLuX5nmoYq1CJi6RjbegNYEf85fr4LcrRM%7C1632744377%7C0ae37032dafd0b7394ba6c35f7d78fc3bcfc17bf3465ee87b6ffb23c9bd1d9aa; MONITOR_WEB_ID=aa02b1ce-7eca-4ca1-9945-26f6eb8736c4; passport_csrf_token_default=41c044ddb9a7768743f59ef8c445836b; passport_csrf_token=41c044ddb9a7768743f59ef8c445836b; odin_tt=59541282299fd6088773d60702c10e22cf395bbe2ad43387cc5a1f1268e0b49539d2228b027e13642805eaa6c46804e338df3a16d9da9c7178a2a202f7489d12; _tea_utm_cache_6383=undefined; douyin.com; s_v_web_id=verify_kuqvv6p4_YjqU18Ra_QeV7_4zv8_9ZB9_WBVgaVOs06uj; _tea_utm_cache_1300=undefined; __ac_nonce=061681c2f000567586575; __ac_signature=_02B4Z6wo00f01-i76fwAAIDCi7EplXNNuu.on-1AAJtQNYXvhFUOGADQjDBpv-bfFdUV4sLQv1NC67tc-k1IspofGeBvDhfKKqeZNZCOa.hxwhj-AHQQIVnquzZ7vtGjx2HSsG3GQLOgMse720; msToken=6sG90ahzLoVg7R4O5SAh_qe9OXTGEHiSZ4997ef5wn5ep5Jkg1NMJ0O73wMh-xJS3rYRUuk7Z6LBkKolkMEg63exfDDl-gsStfY6HfqBlmaaLfTTX6aDzd8dZvs=; msToken=htFRUeGN-Xof_NiqwMK2xx1UuA3wqQuzgbdl7KoH_hS2T730pt6bw7vz0RzU3BCuGiSq-YQF61qyvnSJY3CZqcUgAuLgBNWiD1vY3KIKZnMmGLoG1W3jMA==; tt_scid=9F5FY0k84EFeUv8G-wjVOB2.pGkWm9KQRvFIte.XLiJNaUyk1vHm5HoJgiDNYpzx9f71',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
response = requests.get(url=url, headers=headers)

 

獲取數據

print(response.text)

 

解析數據

提取視頻播放地址,以及視頻標題

title = re.findall('<title data-react-helmet="true"> (.*?)</title>', response.text)[0]
href = re.findall('src(.*?)vr%3D%2', response.text)[1]
video_url = requests.utils.unquote(href).replace('":"', 'https:') # 解碼

 

保存數據

video_content = requests.get(url=video_url).content # 獲取二進制數據內容
with open('video\\' + title + '.mp4', mode='wb') as f:
    f.write(video_content)
    print(title, video_url)

 

運行代碼,得到數據

批量獲取數據數據

導入模塊

from selenium import webdriver  # pip install selenium 模擬人的行為操作瀏覽器
import time

 

實例化一個瀏覽器對象

driver = webdriver.Chrome()  # 實例化一個瀏覽器對象
driver.get('https://www.douyin.com/user/MS4wLjABAAAAK1Zd96kIeExggUquf_wrHUPDQYTZfjdGXClxQAJHyMQ')
time.sleep(3)  # 延時3秒鍾 手動打碼
drop_down()

 

提取標簽

lis = driver.find_elements_by_css_selector('#root > div.windows-os > div:nth-child(2) > div > div._67f6d320f692f9e5f19d66f4c8a1ecf9-scss > div._927ae3b0dd790b5b62eae61c7d2fa0bc-scss > div:nth-child(2) > ul > li')
for li in lis:
    url = li.find_element_by_css_selector('a').get_attribute('href')
    print(url)

 

執行頁面滾動的操作

def drop_down():
    for x in range(1, 30, 4):  # 1 3 5 7 9  在你不斷的下拉過程中, 頁面高度也會變的
        time.sleep(1)
        j = x / 9  # 1/9  3/9  5/9  9/9
        # document.documentElement.scrollTop  指定滾動條的位置
        # document.documentElement.scrollHeight 獲取瀏覽器頁面的最大高度
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)

 

替換特殊字符

title = re.sub(r'[\/:*?"<>|]', '_', title)

 

運行代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM