天天看點

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

話不多說,言歸正傳,直接上步驟:

1 建立新群發

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

我們選擇自建圖文

2 搜尋目标公衆号内的視訊的标題

在文章内添加超連結

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

選擇目标公衆号

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

搜尋選中目标公衆号

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

搜尋公共号内的文章名稱

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

打開開發者工具

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

選擇network,并重新搜尋

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

擷取到請求的url

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

打開url

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

檢視response

我們需要重點關注畫紅框的部分,在我們之後的會使用到

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

我們根據上面的請求url變換begin,就可以變換不同的請求,擷取不同的文章清單

我們首先定義headers,在請求的時候使用。

headers = {    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",    "Host": "mp.weixin.qq.com",    "Referer": "https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=0&count=5&fakeid=MjM5MDg5MDY5OQ==&type=9&query=%E9%87%91%E7%93%B6%E6%A2%85&token=1917041231&,    "Cookie": "自己的cookie"}
           
python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

其中Referer是目标的url,cookie 是自己的cookie

我們第一點的python代碼就是擷取文章的名稱、url、appmsgid、itemidx四個字段

import requestsimport jsonpathimport jsonheaders = {    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",    "Host": "mp.weixin.qq.com",    "Referer": "https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=0&count=5&fakeid=MjM5MDg5MDY5OQ==&type=9&query=%E9%87%91%E7%93%B6%E6%A2%85&token=1917041231&,    "Cookie": "自己的cookie"}​def getInfo():    for i in range(4):        # token  random 需要要自己的   begin:參數傳入        url = "https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin="+str(i * 5)+"&count=5&fakeid=MjM5MDg5MDY5OQ==&type=9&query=%E9%87%91%E7%93%B6%E6%A2%85&token=1917041231&        response = requests.get(url, headers=headers)​        jsonRes = response.json()        print(jsonRes)        titleList = jsonpath.jsonpath(jsonRes, "$..title")        urlList = jsonpath.jsonpath(jsonRes, "$..link")        appmsgidList = jsonpath.jsonpath(jsonRes, "$..appmsgid")        itemidxList = jsonpath.jsonpath(jsonRes, "$..itemidx")        print(titleList)        print(urlList)        print(appmsgidList)        print(itemidxList)                        # 周遊 構造可存儲字元串        for index in range(len(titleList)):            title = titleList[index]            url = urlList[index]            appmsgid = appmsgidList[index]            itemidx = itemidxList[index]​            scvStr = "%s, %s," % (title, url)            # print(scvStr)            with open("/Users/xxxx/Downloads/info.csv", "a+", encoding="gbk", newline='') as f:                f.write(scvStr)
           

我們生成了需要的下載下傳清單​:

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

我們取出其中的一個連結在浏覽器打開

http://mp.weixin.qq.com/s?__biz=MjM5MDg5MDY5OQ==&mid=2247491878&idx=5&sn=ce2c259c71be3cdabcafdfd6af18e67e&chksm=a6bf4e8291c8c7944a92b8eed57790651f74669aba216f3f1f15e9e11d3eebbf820efe23fa7a#rd
           

然後繼續打開開發者工具,我們找到下圖的url請求:

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

這就是我們所要請求url,我們檢視結果:其中的url就是我們要的視訊的連結

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

假如我們打開的連結是:

http://mpvideo.qpic.cn/0b784eaacaaafiapaprt7zpfbyodahqqaaia.f10003.mp4?dis_k=9413622f256507d5375427b9fb58b16e&dis_t=1591847011
           

我們打開的時候是網頁的形式

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

我們就拿着這個url下載下傳了

我們需要分析拿到這個url的請求:

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response

我們需要注意的是上面的四個,其中mid和idx 是對應我們在第一步中取出的appmsgid和itemidx,enterid 是進入的時間,是以我們需要知道這個vid是什麼?

但是我們不知道這是什麼,是以我們就需要将第一步的結果的url請求一次,取出vid,在這裡使用的是正規表達式取出來的:

response1 = requests.get(url,headers=headers)jsonRes1 = response1.textdirRe = r'wxv_.{19}'result1 = re.search(dirRe,jsonRes1)wxv = result1.group(0)print("wxv ", wxv)
           

接下來我們就可以拼接視訊位址了,請求結果并下載下傳:

def getVideo(video_title, wxv, appmsgid, itemindex):    video_path = '/Users/xxxx/Downloads/videoFiles/' + str(itemindex) + ".mp4"    t = time.time()    # 頁面可下載下傳形式    video_url_temp = "https://mp.weixin.qq.com/mp/videoplayer?action=get_mp_video_play_url&preview=0&__biz=MjM5MDg5MDY5OQ==&mid="+str(appmsgid)+"&idx="+str(itemindex)+"&vid="+wxv+"&uin=&key=&pass_ticket=&wxtoken=777&devicetype=&enterid="+str(int(t))+"&appmsg_token=&x5=0&f=json"    print("video_url_temp ", video_url_temp)    response = requests.get(video_url_temp, headers=headers)    content = response.content.decode()    content = json.loads(content)    url_info = content.get("url_info")    video_url2 = url_info[0].get("url")    print(video_url2)    # 請求要下載下傳的url位址    video = requests.get(video_url2)    # content傳回的是bytes型也就是二進制的資料。    video = video.content    with open(video_path, 'wb') as f:        f.write(video)        f.flush()
           

我們最終可以下載下傳成功:

python一個等号和兩個等号_python批量下載下傳公衆号内的視訊1 建立新群發2 搜尋目标公衆号内的視訊的标題在文章内添加超連結選擇目标公衆号搜尋選中目标公衆号搜尋公共号内的文章名稱打開開發者工具選擇network,并重新搜尋擷取到請求的url打開url檢視response