python一个等号和两个等号_python批量下载公众号内的视频

ec558bd3e20bd735ba4baefefd47bd41.png

话不多说,言归正传,直接上步骤:

1 创建新群发

299bd3ee3987958b4c1e609e704b19f8.png

我们选择自建图文

2 搜索目标公众号内的视频的标题

在文章内添加超链接

65a161fb456da5f90d1d300efc74af02.png

选择目标公众号

f4179797d1011fbd74da2c9f6850fde1.png

搜索选中目标公众号

8ad0ebdb226d1323404183f018ba1624.png

搜索公共号内的文章名称

484a2c92224280ddb9a520aeb48688e9.png

打开开发者工具

d48e1d5e9e497b8e8945eeaf0427d75a.png

选择network,并重新搜索

8685e24310a1fba182f85a76748779cf.png

获取到请求的url

d18c598eb03e77e2176d601b75f3e02c.png

打开url

44ec431b6664220db3264807714ca613.png

查看response

我们需要重点关注画红框的部分,在我们之后的会使用到

20b935014f6d04a62d61e940385902bf.png

我们根据上面的请求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&lang=zh_CN&f=json&ajax=1",    "Cookie": "自己的cookie"}
75e554030c21de30616fa03c6b7b01e3.png

其中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&lang=zh_CN&f=json&ajax=1",    "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&lang=zh_CN&f=json&ajax=1"        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)

我们生成了需要的下载列表​:

9f00df0a2fd24ebf331daad7f427d3ee.png

我们取出其中的一个链接在浏览器打开

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

然后继续打开开发者工具,我们找到下图的url请求:

85a5fe928aab415bba5ff864cfbfb9fc.png

这就是我们所要请求url,我们查看结果:其中的url就是我们要的视频的链接

cdd4aef2d1a3da7465f31b51571deb23.png

假如我们打开的链接是:

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

我们打开的时候是网页的形式

ecc42f8fcc4aea08515efec8ebfbb329.png

我们就拿着这个url下载了
我们需要分析拿到这个url的请求:

68368b8749fada3a718de65dd9c732e2.png

我们需要注意的是上面的四个,其中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()

我们最终可以下载成功:

7d599291c40666e25b34f71c919121b2.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值