爬虫项目实战三:爬取抖音短视频
爬取抖音網(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 html3.解析網(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OCT1400 光耦参数测试仪
- 下一篇: vos3000 检测版本失败_超级兔子安