爬蟲(chóng)僅限于知識(shí)學(xué)習(xí),本代碼不得用于任何商業(yè)活動(dòng)侵權(quán),如有不適,請(qǐng)聯(lián)系博主進(jìn)行修改或者刪除。
今天總結(jié)的第三篇,這些個(gè)代碼是模仿著寫(xiě)出來(lái)的,這兒我著重寫(xiě)我覺(jué)有用的東西了,一上午過(guò)去了,還只弄完三篇,時(shí)間好緊張啊。
訪問(wèn)的是https://www.douyin.com/share/user/63692754272的抖音,找到其url,并進(jìn)行訪問(wèn)
首先擺出源碼
import requests
import json
url="https://www.douyin.com/web/api/v2/aweme/like/?user_id=63692754272&sec_uid=&count=21&max_cursor=0&aid=1128&_signature=t.9P0BAd6rId0A9Qpgu2N7f.T8&dytk=102f4e17eb7a0ff33c5500bb284aaeda"
headers={
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3676.400 QQBrowser/10.4.3469.400'
}
cookies={
'cookie':'ga=GA1.2.13243249.1563845400; _gid=GA1.2.1780807193.1566271470; _ba=BA0.2-20190820-5199e-CteeFBBR2NT79iyj4gab'
}
count=1
while True:
result = requests.get(url, headers=headers)
result.encoding='utf-8'
# result1=json.loads(result.text)
result1=result.json()
if len(result1.get("aweme_list")) !=0:
break
print("訪問(wèn)第{}次".format(count))
count=count+1
print(result1)
x=0
for i in result1['aweme_list']:
m=i['video']['download_addr']['uri']
paqu='https://aweme.snssdk.com/aweme/v1/playwm/?video_id='+m
# title = i['desc']
# print(title)
x+=1
while True:
mp4 = requests.get(paqu, headers=headers, stream=True).content
if mp4!=None:
break
open(str(x)+ '.mp4', 'wb').write(mp4)
print('爬取完成')
然后著一進(jìn)行分析
訪問(wèn)的網(wǎng)址是:https://www.douyin.com/share/user/63692754272/,用訪問(wèn)者的形式進(jìn)行訪問(wèn),避免反扒,這是最初級(jí)的方式,高級(jí)一點(diǎn)的就是再加上cookie,雖然不知道有啥用,感覺(jué)加上以后,出錯(cuò)的情況小很多了,解碼這兒用的是utf-8
import requests
import json
url="https://www.douyin.com/web/api/v2/aweme/like/?user_id=63692754272&sec_uid=&count=21&max_cursor=0&aid=1128&_signature=t.9P0BAd6rId0A9Qpgu2N7f.T8&dytk=102f4e17eb7a0ff33c5500bb284aaeda"
headers={
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3676.400 QQBrowser/10.4.3469.400'
}
cookies={
'cookie':'ga=GA1.2.13243249.1563845400; _gid=GA1.2.1780807193.1566271470; _ba=BA0.2-20190820-5199e-CteeFBBR2NT79iyj4gab'
}
因?yàn)槎兑艟哂幸环N反扒措施,它這個(gè)訪問(wèn)結(jié)果不一定會(huì)有,需要反復(fù)訪問(wèn),因此我寫(xiě)了個(gè)while循環(huán),直到訪問(wèn)到結(jié)果
count=1
while True:
result = requests.get(url, headers=headers)
result.encoding='utf-8'
# result1=json.loads(result.text)
result1=result.json()
if len(result1.get("aweme_list")) !=0:
break
print("訪問(wèn)第{}次".format(count))
count=count+1
print(result1)
將這一條內(nèi)容放到bejson中進(jìn)行解析(bejson可以百度找到)
然后再依據(jù)內(nèi)容,找到我們需要的下載地址,視頻的下載,需要使用其視頻鏈接,以二進(jìn)制、流的形式進(jìn)行導(dǎo)出
for i in result1['aweme_list']:
m=i['video']['download_addr']['uri']
paqu='https://aweme.snssdk.com/aweme/v1/playwm/?video_id='+m
# title = i['desc']
# print(title)
x+=1
while True:
mp4 = requests.get(paqu, headers=headers, stream=True).content
if mp4!=None:
break
open(str(x)+ '.mp4', 'wb').write(mp4)
存在一個(gè)未解決的問(wèn)題,按理來(lái)說(shuō)這兒是可以按照視頻名字來(lái)命名的,但是程序執(zhí)行到第四個(gè)時(shí),會(huì)報(bào)錯(cuò),我將名字換成了數(shù)字之后(也就是x),就能正常爬取了,不知道這是啥反扒措施,有大佬能解決的話,歡迎評(píng)論區(qū)留言。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
