爬虫项目实战三:爬取抖音短视频
爬取抖音網頁版短視頻
- 目標
- 項目準備
- 網站分析
- 反爬分析
- 每一頁的鏈接分析
- 代碼實現
- 效果顯示
目標
爬取抖音短視頻,批量下載到本地。
項目準備
軟件: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 html3.解析網頁,獲取視頻鏈接,下載到本地。
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()聲明:僅作為自己學習參考使用。
總結
以上是生活随笔為你收集整理的爬虫项目实战三:爬取抖音短视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OCT1400 光耦参数测试仪
- 下一篇: vos3000 检测版本失败_超级兔子安