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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

爬取抖音網(wǎng)頁版短視頻

      • 目標(biāo)
      • 項目準(zhǔn)備
      • 網(wǎng)站分析
      • 反爬分析
      • 每一頁的鏈接分析
      • 代碼實現(xiàn)
      • 效果顯示

目標(biāo)

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

項目準(zhǔn)備

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

網(wǎng)站分析

打開網(wǎng)站。

首先判斷是靜態(tài)加載或者動態(tài)加載。
鼠標(biāo)向下拉動,發(fā)現(xiàn)滑到底部出現(xiàn)頁碼之類的,初步判定為靜態(tài)加載。

Ctrl+U查看源代碼,Ctrl+F調(diào)出搜索框,輸入一些網(wǎng)頁上出現(xiàn)的文字。

可以找到,最終判定為靜態(tài)加載類型。

反爬分析

同一個ip地址去多次訪問會面臨被封掉的風(fēng)險,這里采用fake_useragent,產(chǎn)生隨機的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

可以發(fā)現(xiàn)規(guī)律,就是每頁的數(shù)字在變化。

代碼實現(xiàn)

1.導(dǎo)入相對應(yīng)的第三方庫,定義一個class類繼承object,定義init方法繼承self,主函數(shù)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)#隨機產(chǎn)生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.發(fā)送請求,獲取網(wǎng)頁。

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

3.解析網(wǎng)頁,獲取視頻鏈接,下載到本地。

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

正則表達(dá)式提取

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

4.獲取多頁

def main(self):start = int(input('輸入開始:'))end = int(input('輸入結(jié)束頁:'))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('輸入結(jié)束頁:'))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()

聲明:僅作為自己學(xué)習(xí)參考使用。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。