日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫项目实战三:爬取抖音短视频

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫项目实战三:爬取抖音短视频 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬取抖音網頁版短視頻

      • 目標
      • 項目準備
      • 網站分析
      • 反爬分析
      • 每一頁的鏈接分析
      • 代碼實現
      • 效果顯示

目標

爬取抖音短視頻,批量下載到本地。

項目準備

軟件:Pycharm
第三方庫:requests,fake_useragent,re
網站地址:http://douyin.bm8.com.cn/d_1.html

網站分析

打開網站。

首先判斷是靜態加載或者動態加載。
鼠標向下拉動,發現滑到底部出現頁碼之類的,初步判定為靜態加載。

Ctrl+U查看源代碼,Ctrl+F調出搜索框,輸入一些網頁上出現的文字。

可以找到,最終判定為靜態加載類型。

反爬分析

同一個ip地址去多次訪問會面臨被封掉的風險,這里采用fake_useragent,產生隨機的User-Agent請求頭進行訪問。

每一頁的鏈接分析

第一頁鏈接:http://douyin.bm8.com.cn/d_1.html
第二頁鏈接:http://douyin.bm8.com.cn/d_2.html
第三頁鏈接:http://douyin.bm8.com.cn/d_3.html

可以發現規律,就是每頁的數字在變化。

代碼實現

1.導入相對應的第三方庫,定義一個class類繼承object,定義init方法繼承self,主函數main繼承self。

import requests from fake_useragent import UserAgent from lxml import etree class douyin(object):def __init__(self):self.url = 'http://douyin.bm8.com.cn/d_{}.html'ua = UserAgent(verify_ssl=False)#隨機產生user-agentfor i in range(1, 100):self.headers = {'User-Agent': ua.random}def mian(self):pass if __name__ == '__main__':spider = douyin()spider.main()

2.發送請求,獲取網頁。

def get_html(self,url):response=requests.get(url,headers=self.headers)html=response.content.decode('utf-8')return html

3.解析網頁,獲取視頻鏈接,下載到本地。

def parse_html(self,html):links=re.compile('open1\(\'(.*?)\',\'(.*?)\',\'\'\)').findall(html)for link in links:print('正在下載:'+link[0])host=link[1]r=requests.get(host,headers=self.headers)filename=link[0]with open('F:/pycharm文件/document/'+filename+'.mp4','wb')as f:f.write(r.content)

說明一下。

open1(’#向往的生活 預告:“大大彭組合”彭昱暢、王大陸、魏大勛蘑菇屋合體!’,‘https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300fc50000bk64uflhc0nbd90s2gtg&line=0’,’’)

正則表達式提取

links=re.compile('open1\(\'(.*?)\',\'(.*?)\',\'\'\)').findall(html)

4.獲取多頁

def main(self):start = int(input('輸入開始:'))end = int(input('輸入結束頁:'))for page in range(start, end + 1):print('第%s頁' % page)url = self.url.format(page)html = self.get_html(url)self.parse_html(html)

效果顯示

完整代碼如下:

import requests from fake_useragent import UserAgent import re class douyin(object):def __init__(self):self.url='http://douyin.bm8.com.cn/d_{}.html'ua = UserAgent(verify_ssl=False)for i in range(1, 100):self.headers = {'User-Agent': ua.random}def get_html(self,url):response=requests.get(url,headers=self.headers)html=response.content.decode('utf-8')return htmldef parse_html(self,html):links=re.compile('open1\(\'(.*?)\',\'(.*?)\',\'\'\)').findall(html)for link in links:print('正在下載:'+link[0])host=link[1]r=requests.get(host,headers=self.headers)filename=link[0]with open('F:/pycharm文件/document/'+filename+'.mp4','wb')as f:f.write(r.content)def main(self):start = int(input('輸入開始:'))end = int(input('輸入結束頁:'))for page in range(start, end + 1):print('第%s頁' % page)url = self.url.format(page)html = self.get_html(url)self.parse_html(html) if __name__ == '__main__':spider = douyin()spider.main()

聲明:僅作為自己學習參考使用。

總結

以上是生活随笔為你收集整理的爬虫项目实战三:爬取抖音短视频的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。