微信公众号首图/封面提取教程 - 附代码
瞎扯
每每浏览微信中各个订阅号/公众号的文章封面时,我们总能看到一些惊叹不绝的绝佳封面,它们可能是艺术,科技,更可能是你的 GODDESS(ES)。
惊叹之余,我们总需将其保存到最安全的空间——本地,以供后续欣赏吧!然鹅,鹅厂并没有给我们可钻之空档(没有明文按钮)。故,今献本法与诸位,助诸成事。
正文
-
找到你要提取的文章,复制其链接;
示例:https://mp.weixin.qq.com/s/83v0tkbA-PjQ2IFajRlPKQ,来自 生死狙击 2 官方微信公众号。
-
在浏览器(手机建议 Via,电脑随便)打开该链接;
-
在网址前加上
view-source
或者右键查看页面源代码; -
查找
msg_cdn_url
(大概在一千五百多行); -
赋值符右方引号内的链接就是了。
这里其实可以看到源代码里提供了三个图片链接,但是我们只需要第一个(和第三条一般一样)就行。
后面的注释提到了参数
idx
参数,这是一个文章位置参数。我们都知道微信公众号有时候发文章可以合并发送,呈现效果就是第一篇得以显示大图,其它的只能显示 1:1 的小图,这个就是通过idx
参数控制的(感谢 知乎问答),在文章idx
等于 0 时,msg_cdn_url
值的返回内容就是长方形大图,否则结果将如第二条一样:1:1 小图。具体得看其在公众号文章中的位置。
将引号内的值复制后在另一个窗口打开,欣赏你要的高清大图吧!如果需要保存直接 Ctrl + S
即可。
示例获取结果:
END
你以为结束了?不可能的!这不得给大家祭上 Python 实现爬取公众号文章封面的代码:
Follow the WTFPL License.
import requests
import re
from datetime import datetime
regex = re.compile(r'msg_cdn_url = "(?P<url>.*?)"; //', re.S)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.76'}
now = datetime.now()
default_filename = f'{now.year}{now.month}{now.day}{now.hour}{now.minute}{now.second}'
def get_url(article_url: str) -> str:
'''Enter a url of WeChat subscription article, return the url of the cover picture.'''
resp = requests.get(article_url, headers=headers)
obj = regex.search(resp.text)
return obj.group('url')
def download(pic_url: str, save_name=default_filename + '.jpg') -> bool:
'''Download picture from url.'''
try:
resp = requests.get(pic_url, headers = headers)
with open(save_name, 'wb') as f:
f.write(resp.content)
except:
return False
else:
return True
def main(url):
return download(get_url(url))
if __name__ == '__main__':
while True:
url = input('Enter your article link hear:')
print(['失败', '成功'][main(url)])
teamczyx
http://www.baidu.com 百度一下