微信公众号文章内的视频下载
本帖最后由 默不言 于 2022-1-26 21:54 编辑# 爬取步骤:
第一步:获取文章链接
第二步:将链接放到硕鼠里面解析,获取视频下载地址
## 1.获取文章链接
文章链接直接使用默认浏览器打开文章,然后复制链接即可
## 2.使用硕鼠解析链接
将链接放到硕鼠里面进行解析,然后对比文章的链接和硕鼠解析访问的链接,找到其中部分的内容替换公式。(因为硕鼠解析访问的链接对“=”,“\\”等符号进行了转换,所以需要先将其规律找到,然后构造替换关系式。
> 替换公式:
>
> 文章链接:https://mp.weixin.qq.com/s?__biz=MzIwMzc3MjYzOQ==&&mid=2247613073&&idx=1&&sn=e9307ab0ff93f760eb49a747499881e5&&chksm=96c93d21a1beb4370948aa2ba2fc00c3dac50177f7a5a3577a52fc20cfbed390297bc0bbb19d&&scene=21#wechat_redirect
>
> 硕鼠解析访问的链接:https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzIwMzc3MjYzOQ%3D%3D%26amp%3Bmid%3D2247613073%26amp%3Bidx%3D1%26amp%3Bsn%3De9307ab0ff93f760eb49a747499881e5%26amp%3Bchksm%3D96c93d21a1beb4370948aa2ba2fc00c3dac50177f7a5a3577a52fc20cfbed390297bc0bbb19d%26amp%3Bscene%3D21%23wechat_redirect
>
> /—> %2F
> : —> %3A
> ?—> %3F
> = —> %3D
> & —> %26
> ;—> %3B
> #—> %23
硕鼠解析可以直接返回得到文章内的视频下载链接,根据获得的链接进行视频下载即可。
代码
```python
import os
import re
from time import sleep
import requests
from fake_useragent import UserAgent
import random
from bs4 import BeautifulSoup
def download_url(url):
try:
path = os.getcwd()#获取当前的文件位置
filepath = path + '\\视频'
if os.path.exists(filepath) == False:#判断是否存在filepath,不存在则创建文件夹
os.mkdir(filepath)
URL = 'https://www.flvcd.com/parse.php?format=&kw=' + str(url).replace('/', '%2F').replace(':', '%3A').replace(
'?', '%3F').replace('=', '%3D').replace('&', '%26').replace(';', '%3B').replace('#', '%23')#构造硕鼠的解析链接
# print(URL)
headers = {'UserAgent': 'str(UserAgent).random'}
response = requests.get(URL, headers=headers)
response.encoding = 'gbk'
# print(response.text)
soup = BeautifulSoup(response.text, 'html.parser')
soup = str(soup)
regex_title = re.compile(
r'document.title = "(.*?)" ')
title = re.findall(regex_title, soup)#获取title
# print(title)
regex_href = re.compile(r'href="(.*?)"', re.S)
href = re.findall(regex_href, soup)#获取视频下载地址
# print(href)
video_response = requests.get(href, headers=headers)
print('正在下载{},请稍后。。。。。。'.format(title))
with open(filepath + f'\\{title}.mp4', mode='wb') as f:
f.write(video_response.content)
sleep(10)
print('下载完成!!!')
except:
print(f'下载失败,请确认该文章内含有视频,失败链接是:{url}')
if __name__ == '__main__':
url = 'http://mp.weixin.qq.com/s?__biz=MjM5MDMyMzMxMg==&mid=2247687337&idx=5&sn' \
'=efd74900ff01a778bb0a879a2c6dda30&chksm' \
'=a64adbb6913d52a0908e5ae580ae7f3aa7bbb4b32a2271d7a9e9b7875af84362a2c247479125&scene=21#wechat_redirect '
download_url(url)
```
一开始以为直接使用python获取文章的网页源代码可以直接获取视频的下载链接,但是返回的结果并没有出现,仔细看代码才知道采用了动态加载视频,所以想要直接获取是不现实的。奈何我是一个小白,本来想就此放弃,但是想到要下载的视频有好几百个,一个一个打开然后再用IDM下载,人都会麻了。在网上找了很多方式都没解决,还好最后发现硕鼠可以解析(硕鼠牛逼),就尝试着构造访问硕鼠的方式获取下载视频。
上面的代码针对的是单个视频,需要批量的可以自己更改一下代码就行。
ps:**有没有大佬推荐下怎么学习js逆向和解决动态加载的爬虫资料或者课程,目前卡死在这里了。** a2523188267 发表于 2022-1-27 00:16
对公众号里的某篇里的所有链接能批量抓取下载吗
可以先试试硕鼠能不能把所有的视频链接都解析出来,可以的话就可以做到,只是需要更改下代码而已 lzspain 发表于 2022-1-27 08:55
电脑上在安装有idm插件的浏览器打开网址,手机上在具有视频获取功能的浏览器(IDM下载器自带浏览器)上打开 ...
一两个视频无所谓,但是我需要下载几百个{:1_923:} 先收藏了!~期待下次看到你的解题~~
因为我也有这个烦恼。。。 对公众号里的某篇里的所有链接能批量抓取下载吗 感谢分享 我想爬自己的微信视频怎么爬用电脑微信版本 没有看懂怎么使用 东方天涯 发表于 2022-1-27 07:48
不需要硕鼠啊,很多在线插件都能做到
比如呢哈哈 没有看懂,谢谢分享。